我在一本书中找到了这段代码:
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 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 = o.foo)();
在第二次调用foo时,它被调用处于p或o的范围之外,因此它本质上与调用以下内容相同:
foo();
this
的值将是window
对象,因为该函数作为括号的结果与任何对象分离。这更相当于var f = (p.foo = o.foo); f();
。 - user1106925