有人可以解释我这个javascript对象的“复制”行为

前端之家收集整理的这篇文章主要介绍了有人可以解释我这个javascript对象的“复制”行为前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下代码(我使用的是jQquery库):
var obj = {};
var objstring = '{"one":"one","two":"two","three":"three"}'

// first console output
console.log(objstring);

var jsonobj = $.parseJSON(objstring);

// second console output
console.log(jsonobj);

obj.key = jsonobj;
obj.key.test = "why does this affect jsonobj? (even in the second console output)";

// third console output
console.log(jsonobj);

我的问题:
当我做obj.key = jsonobj并且我在新的obj.key中更改值.为什么jsonobj中的值也会改变?我怎么能避免这种情况? (我想要一个jsonobj的新“副本”).

我做了这个测试用例:http://jsfiddle.net/WSgVz/

解决方法

那是因为没有复制对象. obj.key属性将只包含对象的引用,因此当您向obj.key.test分配内容时,效果与将其分配给jsonobj.test相同.

您可以使用jQuery方法extend创建副本:

obj.key = $.extend({},jsonobj);

这会将值复制到新创建的对象({})中.

猜你在找的JavaScript相关文章