3
я нашел этот код в книге:двойные двойные круглые скобки Javascript
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(); – user1272913
, но если вы запустите код (p.foo = o.foo)(); отпечатки 2 p.foo = o.foo; p.foo(); отпечатки 4 – user1272913
@ user1272913: Они не эквивалентны. Значение 'this' в вызове функции будет объектом' window', потому что функция в результате parens отделяется от любого объекта. Это больше эквивалентно 'var f = (p.foo = o.foo); f(); ' –