1.在全局变量下,this没有任何外层对象下,this指向window对象
执行结果弹出【object Window】,当前this为window对象。(严格模式下是undefined,不做考虑)。
2.在函数内调用this,this指向调用该函数的对象。
弹出0,即this指向调用testThis()函数的全局对象。
3.作为对象属性的函数调用,this指向调用函数的对象,即函数所在的对象。
在function内部和person对象内部同时定义了testValue变量,在函数内部弹窗this.testValue可以看到this指向的是person对象。即this指向函数所在的对象
4.在构造函数中(通过new生成一个新的函数对象),this指向新的对象,而非原来的函数,也非window。
弹出的this.testValue不是0也不是1,而是undefined。说明this指向new生成的新对象,而不是原函数test和window。
5.在事件中的this,指向触发事件的dom对象。
触发了点击事件时,this指向触发事件的dom对象,this.name取到了该dom对象的name值。
结论:
1.如果this在函数内,则this总会指向调用函数的对象。
2.如果this在对象函数或者在对象内,则this总会指向该对象。
3.如果this在构造函数内,则this指向new的新对象,而非之前的函数本身。
4.this总会在js事件内指向触发事件的对象。