这里有新手JavaScript。
如果foo
在关闭中,我如何从成员foobar
中引用成员foobar
?
var priv = {
foo: "bar",
foobar: (function() {
return this.foo === "bar";
})()
};
上面的代码失败了。其中,this.foo
为undefined
。如果我将this.foo
更改为priv.foo
,它仍然是undefined
。如何在priv.foo
封闭内引用foobar
?
答案 0 :(得分:2)
在初始化期间无法读取对象的任何属性,因为此时prev
将不确定。
当您尝试在其中调用clojure时,它会引用未定义的this
或priv
。
可能你想写:
foobar: (function() {
return this.foo === "bar";
})
最后没有()
。然后你可以将其称为priv.foobar();
如果您仍然需要拨打电话,可以在foobar
之后定义foo
:
var priv = {
foo: "bar"
};
priv.foobar = (function() {
return priv.foo === "bar";
})()
答案 1 :(得分:0)
问题是你没有定义一个闭包 - 我认为没有任何方法可以从你的函数中访问foo
,因为priv
尚未初始化。
你到底想要做什么?以下内容相当于我理解你的样本试图做的事情,但我的猜测是我不理解这个问题:
// Set elsewhere
var foo = "bar";
var priv = {
foo: foo ,
foobar: foo == "bar"
};