为什么我不能在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'可以访问?
感谢。
答案 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;