关于this的一个小问题?

代码如下:

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

// 如果
p.foo = o.foo;
p.foo(); // 4

(p.foo = o.foo)(); 和 p.foo = o.foo; p.foo();这两个foo,执行结果为什么会不同,这两种写法有不一样吗?

查看回复