将 JavaScript 对象插入数组

标签 javascript

<分区>

Possible Duplicate:
How do I correctly clone a JavaScript object?

我有这个代码:

var temp = [];
var obj = {name:"1"};
temp.push(obj);
obj.name = "2";
temp.push(obj);

我期望的是真实的:

temp[0].name == "1" && temp[1].name == "2";

实际发生了什么:

temp[0].name == "2" && temp[1].name == "2";

为什么会发生这种情况,我如何才能得到我所期望的?

最佳答案

JavaScript 数组保存对对象的引用,而不是对象本身。当您将对象插入数组时,它不会创建新对象,而只是将对象的引用放入数组中,obj 也指向该对象。

所以最后obj, temp[0], and temp 1都指向同一个对象。要实际创建一个全新的对象,您可以使用 Object.create()或 jQuery.extend({},obj)。尽管在您的情况下,使用 var newobj = {name="2"}

创建一个新的简单对象就足够简单了

关于将 JavaScript 对象插入数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14489860/

相关文章:

javascript - 当结构具有两个以上参数时,带有 array.push() 的 Solidity 函数不起作用

javascript - Youtube api 未知部分统计

javascript - 在另一个列表中渲染列表并使用变量

javascript - rgb 值作为变量

javascript - Swiper - OpenCart - 背景全尺寸图像不起作用

javascript - 使用 SystemJS 导入 jquery 不起作用

javascript - blur.js - 用另一张图片模糊背景

javascript - 将函数输入限制为给定的正则表达式格式

javascript - 如何通过匹配特定字符串将一个 ng-model 中的值绑定(bind)到另一个

javascript - 纯JS中的函数回调