访问javascript对象中的变量

时间:2013-05-28 03:47:42

标签: javascript object

所以我有一个对象:

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

然而,这会引发错误navBar未定义。使用this.navBar似乎也无效。

对于为什么这不起作用以及访问变量的正确方法的任何见解都将非常感激。

2 个答案:

答案 0 :(得分:3)

你的意思是你在定义一个对象时无法引用兄弟属性,如下所示:

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

这是因为此处的athis.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);

答案 1 :(得分:1)

无法从对象文字声明中访问navBar属性。你必须做这样的事情:

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

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