1:普通函数中的this定义时不明确,最终指向调用函数的对象的this
var x=11;
var obj={
x:22,
say:function(){
console.log(this.x)
}
}
obj.say();
这里this.x的this指向的时调用其的对象obj,obj中有x值为22,所以输出结果22
下面箭头函数输出结果11
这里匿名函数中的this不再是调用其对象的obj,而是匿名函数生成时的环境中的this,也就是obj的this,而obj生成相当于是widow.obj,所以指向window,输出11
针对于New实例化this指向
第一次打印this.a是undefined,不是11,是因为new实例化的时候,其this指向是构造函数,也就是test2这个构造函数,其内部有this.a=22,所以,第二次打印22,可以跟下面的比较,如果不是构造函数则第一次打印11,第二次打印22
第一次是11是因为test2()调用,相当于是window.test2(),所以其this指向window,输出11,然后this.a=22,相当于修改了window中的a,所以,下面打印出的还是window中的a,22