在网上搜索关键字 “javascript object clone”,能够找到不少实现克隆 Object 的代码,但是据我测试,让人满意的几乎没有。
今天发现 jQuery 的做者 John Resig 给别人的答复,尝试了一下确实很好用。
方法以下:javascript
// 浅层复制(只复制顶层的非 object 元素) var newObject = jQuery.extend({}, oldObject); // 深层复制(一层一层往下复制直到最底层) var newObject = jQuery.extend(true, {}, oldObject);
测试以下:java
var obj1 = { 'a': 's1', 'b': [1,2,3,{'a':'s2'}], 'c': {'a':'s3', 'b': [4,5,6]} } var obj2 = $.extend(true, {}, obj1); obj2.a='s1s1'; obj2.b[0]=100; obj2.c.b[0]=400; console.log(obj1); console.log(obj2);
obj2 内部元素的值改变以后,若是 obj1 的相应值保持不变,就说明复制成功。测试