訪問變量所以我有一個對象:的JavaScript物件
settings: {
navBar: $(".navbar");
dropdown: navBar.find(".dropdown");
}
但是,這將引發沒有定義navBar
錯誤。使用this.navBar
似乎也不工作。
任何洞察爲什麼這不起作用,並正確的方式來訪問變量將不勝感激。
訪問變量所以我有一個對象:的JavaScript物件
settings: {
navBar: $(".navbar");
dropdown: navBar.find(".dropdown");
}
但是,這將引發沒有定義navBar
錯誤。使用this.navBar
似乎也不工作。
任何洞察爲什麼這不起作用,並正確的方式來訪問變量將不勝感激。
你是說你有問題指的是同級屬性,當你定義一個對象,像這樣:
var example = {
a: 1,
b: a + 1 // <-- a is undefined
};
這是因爲a
或this.a
這裏要提到的財產a
範圍內確定example
。
你可以嘗試這樣的事:
function prepareSettings(navNode)
{
return {
navBar: navNode,
dropdown: navNode.find(".dropdown")
};
}
var settings = prepareSettings($(".navbar"));
或在settings
創建一個getter類型的方法,wherin this
指settings
對象,並具有其navBar
屬性訪問:
var settings = {
navBar: $(".navbar"),
getDropdown: function()
{
return this.navBar.find(".dropdown");
}
};
一您遇到的問題的更清晰的示例可能如下所示:
var a = 5;
var test = {
a: 3,
b: a
};
// Output is 5 rather than 3, which you might have
// been expecting instead.
console.log(test.b);
謝謝,這對我來說是一個解釋。我不知道你無法訪問兄弟變量。雖然煩人,至少我沒有做任何蠢事,這是一種解脫。 – user2297440
@ user2297440目前看起來可能很煩人,但隨着你的進步,你最終會意識到這是完全合理的。 – Marty
navBar
屬性不能從對象字面聲明內部訪問。你必須做這樣的事情:
var navBar = $(".navbar"),
settings = {
navBar: navBar,
dropdown: navBar.find(".dropdown")
};
申報navBar
作爲一個局部變量,然後請參閱從你的對象聲明中它。
閱讀JSON – Tom
嘗試'var navBar = $(「。navbar」); ... ... 設置:{ navBar:navBar; dropdown:navBar.find(「。dropdown」); }' –
這是因爲你甚至沒有對象。 –