js中,修改标签的属性值,用到了一个伪数组,但是伪数组不能直接修改属性值,用this指针才可以,为什么呢

JavaScript07

js中,修改标签的属性值,用到了一个伪数组,但是伪数组不能直接修改属性值,用this指针才可以,为什么呢,第1张

在所有的事件中,this都指向绑定的dom元素,这个就没什么好解释的。只是用this最方便。

其实可以利用事件冒泡的方式绑定1个事件就可以了。

如果你非说不用this其实也能实现。

var input = document.getElementsByTagName('input')

for(var a=0a<input.lengtha++){

(function(a){

input[a].onclick=function(){

input[a].value='123'

}

})(a)

}

至于为什么要用匿名函数自调的方式,是因为模拟了块级作用域,不然的话由于所有的事件,可以把它想成异步的,那么无论怎么按a都等于3.这不是你想要的。

function Fun(argument1,argument2){

return this

}

//直接调用

var f1 = Fun()// window {}

//实例化对象

var f2 = new Fun()// Fun {}

f1 只是调用 Fun函数,而 f2是实例化对象 Fun。两个的this指向的不是同个地方。调用函数的this指向的是window,实例化对象的this指向的是对象本身。

(构造函数的命名通常使用驼峰命名法,首字母大写,以此和普通的函数区分开来,这是一种习惯用法。)

测试例子:

如上,f只是调用fun1,输出的第一个this是指向window的。fun2也只是调用,所以this也是指向windowde。a是实例化的对象,this指向的是fun3实例化后的对象。

如果做下面调整。

如上,fun1跟fun3是被实例化,this指向对象本身,fun2只是调用,this指向window。

那给this的属性赋值会有什么样的结果呢?

调用函数里面的this属性赋值都是给window赋值的。

如果 fun1()改成 var a = new fun1()呢?

大家仔细看看输出的结果。