javascript - 更新对象属性,最初设置为未定义的数组元素

标签 javascript

var A = [];

var obj = {
    x: A[1],
    y: 'hello'
};

A[1] = 1;

console.log(JSON.stringify(obj)); // {"y":"hello"}

当我在 console.log() 中使用 obj 时,A[1] 已经被定义。

如何获得“最新的”obj,并更新其所有属性?这样当我们执行 console.log() 时我们得到 {"x":1,"y":"hello"}

最佳答案

您正在获取最新的对象。如果您希望 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));

关于javascript - 更新对象属性,最初设置为未定义的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34770729/

相关文章:

javascript - 将对象列表推送到angularjs中的另一个对象

javascript - 在函数构造函数中设置原型(prototype)

javascript - 使用 javascript/jquery 在新后台选项卡中打开链接

javascript - 如何检查变量是否不为空?

javascript - 有没有一种简单的方法可以对字符串中的特定字符进行动画处理?

javascript - 删除 Dojo dGrid 的事件监听器

javascript - 将 JavaScript 局部变量转换为全局变量

javascript - AngularJS 指令范围属性匹配

php - 验证用户输入的质量

javascript - jquery 选择器不提供所有元素