[英]JavaScript scope: referencing parent object member from child member's closure
JavaScript 的新手在這里。
鑒於foobar
在閉包中,我如何從成員foobar
中引用成員foo
?
var priv = {
foo: "bar",
foobar: (function() {
return this.foo === "bar";
})()
};
上面的代碼失敗了。 在其中, this.foo
是undefined
。 如果我將this.foo
更改為priv.foo
,它仍然是undefined
。 如何從foobar
閉包中引用priv.foo
?
在 object 的定義中,在其初始化期間無法讀取其任何屬性,因為此時prev
將是未定義的。 當您嘗試在其中調用 clojure 時,它指的是 undefined this
或priv
。
可能你想寫:
foobar: (function() {
return this.foo === "bar";
})
最后沒有()
。 然后你可以把它稱為priv.foobar();
如果你仍然需要調用它,你可以在foo
之后定義foobar
:
var priv = {
foo: "bar"
};
priv.foobar = (function() {
return priv.foo === "bar";
})()
問題是您沒有定義閉包 - 我認為沒有任何方法可以從您的 function 訪問foo
,因為priv
尚未初始化。
你到底想做什么? 以下內容相當於我理解您的示例正在嘗試做的事情,但我的猜測是我不理解這個問題:
// Set elsewhere
var foo = "bar";
var priv = {
foo: foo ,
foobar: foo == "bar"
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.