var obj ={
foo: function () {
console.log(this);
}
};
obj.foo(); //{foo: ƒ}
(obj.foo)(); //{foo: ƒ}
(obj.foo = obj.foo)(); // window (小写的window是对象,大写的是构造函数)
在学 this的时候,阮一峰老师举例,没有看懂
为什么 (obj.foo = obj.foo)() // window
左边的obj.foo
重新赋值了一下,就变了来环境?this
代表的的obj
对象 变成了window
对象
在(obj.foo = obj.foo)()中
右边obj.foo表达式返回的是 obj.foo 的求值结果。而 obj.foo 的求值结果是一个纯粹的函数,因而在函数被调用的执行环境中,this 肯定不是原来的 obj 。