先上个代码例子,再说我不理解的地方,求指点,谢谢!
var name="window";
var obj={
name:'netease',
print1:()=>{
console.log(this.name);
}
}
obj.print1();//window
es6
中的this
是定义时绑定,跟运行时无关,我很纳闷就是这个例子中,定义时 print1
方法里面的this
不是应该最先查找到的就是obj
里面的name
吗,为什么输出是window
,还是绑定到全局变量上去了?不是明明print1
里面没有this
,再查找外围this
,先找到的应该是obj
中的this
吗?
谢邀。
下面这句话引自《深入理解ES6》
箭头函数的
this
和普通函数的this
可以看成完全两个概念的东西,不用传统的this去理解。我对
外围
的理解是,这个外围指的是()=>{}
整体的外围,比如你的代码中:name属性的外围是什么?print1的外围是什么?。所以()=>{console.log(this.name);}
的外围已经出了obj,从而进入window可以借助我下面的代码来理解: