访问javascript对象中的变量

Accessing variables in a javascript object

本文关键字:变量 对象 javascript 访问      更新时间:2023-09-26

我有一个对象:

settings: {
    navBar: $(".navbar");
    dropdown: navBar.find(".dropdown");
}

然而,这会抛出错误navBar未定义。使用this.navBar似乎也不起作用。

你的意思是当你定义一个对象时,你在引用兄弟属性时遇到了麻烦,像这样:

var example = {
    a: 1,
    b: a + 1 // <-- a is undefined
};

这是因为这里的athis.a将在定义example的作用域内引用属性a

你可以试试这样做:

function prepareSettings(navNode)
{
    return {
        navBar: navNode,
        dropdown: navNode.find(".dropdown")
    };
}
var settings = prepareSettings( $(".navbar") );

或者在settings中创建一个getter类型的方法,其中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);

不能从对象文字声明内部访问navBar属性。你必须这样做:

var navBar = $(".navbar"),
    settings = {
        navBar: navBar,
        dropdown: navBar.find(".dropdown")
    };

navBar声明为局部变量,然后在对象声明中引用它。