创建新对象时,为什么要更新旧对象
When creating a new object why does it update the old one?
当我从现有对象创建一个新对象,然后附加一个新属性时,它为什么要更新以前的属性?
他们的解决方案是否不需要对我的代码进行太多更改?
这是我的例子jsfiddle。
var data = [
{
"id" : 1,
"name" : "carrot",
"price" : 0.10,
"stock" : 12,
"bgLocation" : "-1px -54px"
},
{
"id" : 2,
"name" : "fennel",
"price" : 1.20,
"stock" : 6,
"bgLocation" : "-146px -52px"
}
]
var item = data[0];
item.added = 4;
//data[0] should not contain the added attribute.
$('body').append(JSON.stringify(data[0]));
变量项和数据只是指向同一对象的引用。通过呼叫。
var item = data[0];
您不是在复制对象,而是在对象上创建一个新的引用,该引用使用data[0]进行寻址。因此
item.added = 4;
将更改对象bot vraiables指向。
此处
如何正确克隆JavaScript对象?
是关于如何在javascript中复制对象的一些详细信息。
因为您得到的只是对原始对象的引用,而不是副本。因此,如果更新此引用,则是在隐式更新原始对象。
您可以使用$.extend()
:轻松创建副本
var item = $.extend({}, data[0]);
演示。
相关文章:
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 为什么不推荐使用“with”?是否有更好或其他方法可以“下降”到对象的命名空间
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 为什么可以't我在JavaScript中获取导航器对象的属性计数
- 为什么我要将函数添加到对象原型中,而不是将其添加到对象中
- 为什么可以't我用Set对象调用Array.prototype.map
- 为什么控制台没有't使用输入的对象's的`toString`方法
- 创建新对象时,为什么要更新旧对象
- 为什么要使用立即调用的函数来创建新对象
- 为什么document.getElementsByClassName(“className”)返回对象
- 为什么代码会指向window对象
- 为什么数组在对象内部迭代对象时存储重复值
- 为什么Javascript程序员更喜欢在代码中重复字符串作为常量,而不是使用枚举类型的对象
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- NodeJS应用程序只显示第一个JSON对象.为什么?
- JavaScript:古代代码使用“new”关键字启动简单对象.为什么
- JavaScript 对象 - 为什么未定义的属性
- UnCaught TypeError-Javascript中的嵌套对象?为什么不允许这样做?对象文字表示法有效
- 对象.为什么我的代码输出对象而不是名称字符串值
- NodeJS模块填充的数组变成空对象.为什么