var A = [];
var obj = {
x: A[1],
y: 'hello'
};
A[1] = 1;
console.log(JSON.stringify(obj)); // {"y":"hello"}
当我在obj
中使用console.log()
时,A[1]
已经定义。
如何获取“最新”obj
,并更新其所有属性?这样我们在{"x":1,"y":"hello"}
时会得到console.log()
?
答案 0 :(得分:3)
A[1] = 1;
实际上是在已经构建obj
时定义的。因此,obj.x
始终为undefined
。
var A = [];
A[1] = 1;
var obj = {
x: A[1],
y: 'hello'
};
document.body.textContent = JSON.stringify(obj);

答案 1 :(得分:3)
您正在获取最新的对象。如果您希望x
属性更新,因为它的指定值会在代码的运行时间内发生变化,您需要使用一个对象,因为它将会只需存储对它的引用,并且随着内存中的位置发生变化,您将在分配的任何位置看到这些更改。数组被视为对象,因此您只需将A
指定给x
。
var A = [];
var obj = {
x: A,
y: 'hello'
};
A[1] = 1;
alert(JSON.stringify(obj));
使用对象作为值的另一个示例:
var A = [];
var B = {};
A[1] = B;
var obj = {
x: A[1],
y: 'hello'
};
B.z = 1;
alert(JSON.stringify(obj));
答案 2 :(得分:3)
假设您希望obj.x
的值为原语:
无法将var
的引用分配给obj.x
。您可以将obj.x
作为一个函数来获取该 var variable= 2
var obj = {
x: function() {
return variable;
},
y: 'hello'
};
variable = 5;
console.log(obj.x()); //prints 5
的最新值变量
matplotlib
答案 3 :(得分:0)
Javascript对象不会通过引用重新初始化。 您需要执行obj.x = 1来更新对象。