对象的属性如何访问其他属性?

时间:2014-05-18 14:13:13

标签: javascript object scope closures

为什么我不能在javascript中做这样的事情?

var big = { a:1, b:2, c:3, d:big.a }

对象的一个​​属性如何访问另一个属性?

// --------------------------------编辑如下---------- ------------------------

感谢所有答案,现在我发现了另一个问题:

当我这样做时:

var big =  {
        a : 1,
        b : 2,
        c : 3,
        d : this.a
    }
   console.log(big.d);

未定义

然而,当我这样做时:

var big =  {
        a : 1,
        b : 2,
        c : 3,
        d : function(){console.log(this.a)}
    }

 big.d();

注销1

我想知道这里发生了什么,是因为它是第二个代码中的一个函数,以某种方式使'this'可以访问?

感谢。

4 个答案:

答案 0 :(得分:1)

你可以这样做

var big = { a:1, b:2, c:3};
big.d = big.a;

在您使用d:big.a时的代码中,它仍未定义。 big未定义

答案 1 :(得分:1)

试试这个

var big = new function ()
        {
            this.a = 1;
            this.b = 2;
            this.c = 3;
            this.d = this.a;
        }

        alert(big.a);
        alert(big.b);
        alert(big.c);
        alert(big.d);

希望这有帮助。

答案 2 :(得分:0)

由于在您实际声明big时尚未声明要获取big.a的变量big。在这种情况下,您应该在之后注入对象d

var big = { a:1, b:2, c:3 };
big.d = big.a;

答案 3 :(得分:0)

您无法在对象文字中执行此操作。这是因为=的右侧在分配发生之前进行了评估。 Javascript首先创建一个具有给定属性的对象,然后将其分配给变量。因此,当您尝试访问big.a时,尚未进行分配,因此big未定义,因为您无法访问undefined的属性而收到错误。< / p>

您需要在作业后指定big.d

var big = { a:1, b:2, c:3};
big.d = big.a;