簡體   English   中英

JavaScript scope:從子成員的閉包中引用父 object 成員

[英]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.fooundefined 如果我將this.foo更改為priv.foo ,它仍然是undefined 如何從foobar閉包中引用priv.foo

在 object 的定義中,在其初始化期間無法讀取其任何屬性,因為此時prev將是未定義的。 當您嘗試在其中調用 clojure 時,它指的是 undefined thispriv

可能你想寫:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM