为什么"这个"价值不同?

Ale*_*lin 4 javascript this

这是一个例子,其中o.foo();3 (p.foo = o.foo)();是2 但是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”
Run Code Online (Sandbox Code Playgroud)

如果我做这样的事情,那么我得到4的就是我想要的东西.这两个例子有何不同?

p.foo = o.foo;
p.foo();  // 4
Run Code Online (Sandbox Code Playgroud)

Jul*_*ire 6

这个 :

(p.foo = o.foo)();
Run Code Online (Sandbox Code Playgroud)

这样做几乎相同:

d = (p.foo = o.foo);
d();
Run Code Online (Sandbox Code Playgroud)

基本上它所说的是赋值的返回是全局上下文中的函数本身.其中a2.


归档时间:

查看次数:

133 次

最近记录:

7 年,7 月 前