function foo(){
console.log(this.a);
}
var a = 2;
var o = {
a:3,
foo: foo
};
var p = { a:4 };
o.foo(); //3
(p.foo = o.foo)(); //2
/**
相当于:
function w(){
p.foo = o.foo;
}
w();
此时的constructor指向window,调用这个w,这个w是在window下创建的,相当于
调用window.w(),所以constructor指向window。
*/
p.foo = o.foo;
p.foo(); //4 函数由p执行,那么constructor指向的就是对象p,谁调用就指向谁0.0
//this也就指向p, 因此this.a === p.a
想问一下为什么 (p.foo = o.foo)()不是赋值操作吗,为什么会执行呢
https://segmentfault.com/q/10...