16.1.1. this是一个对象。
this出现在全局的代码块中,它就是window对象。
这里的this出现在一个对象的方法中,它就是对象本身。
16.1.2. 到处都有this
只要你能够写js的地方,就可以写this.
16.1.3. 不能手动地修改this的值
它不能出现在=的左边!
16.2. 确定this的值
16.2.1. 出现在函数的外部
这个this外层没有function,并且它不出现某一个对象的事件响应函数的内部。
这种情况:只有一个答案就是window.
如下情况:
This是这个button对象。为什么不是window.
上面的js代码,等价于下面:
Btn.onclick = function(){ alert(“abc”);alert(this);}
这里this出现在function的内部,所以不是window.
16.2.2. 出现在函数的内部
16.2.2.1. 这个函数不是某一个对象的属性。
就是一个普通的被调用的函数。
16.2.2.2. 这个函数是一个对象的属性
这里的say是obj对象一个属性,则里面的this会指向obj(this === obj )。
16.2.2.3. 调用函数之前加一个new的话,会创建一个新的对象,而这个函数内部的this就会指向创建的新对象
注意:
只有在代码运行时,才能确定this的值。换句话,第22行运行时,this会指向f。
如果是如下代码:
则第22行运行时,this才指向window。
确定this的值:“谁调用我,我就指向谁”
this的值:只有在代码运行时,才能确定!