【发布时间】:2018-09-27 21:51:18
【问题描述】:
这是一个例子,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”
如果我做这样的事情,那么我会得到4,这就是我想要的。这两个例子有何不同?
p.foo = o.foo;
p.foo(); // 4
【问题讨论】:
-
你的意思是
o.foo()返回{a: 3, foo: ƒ}? -
@UladKasach 抱歉
console.log( this.a );编辑了我的代码 -
那是因为你使用了自调用函数。看看here
-
@AlexandreMiziara - 你确定这是一个 IIFE 吗?如果是,那如何解释结果?
-
当你做 p.foo = o.foo.您正在尝试分配两个不相等的对象(一个具有比另一个更多的属性)。然后在最后你调用 () 来命令函数立即调用。自然会导致一些问题
标签: javascript this