a = {k1:1, k2:2, k3:3};b = {}; // 浅层复制(只复制顶层的非 object 元素) var newObject = jQuery.extend({}, oldObject); 或:$.extend(b,a); 或:jQuery.extend(b,a);//把a复制给b // 深层复制(一层一层往下复制直到最底层) var newObject = jQuery.extend(true, {}, oldObject);
测试如下:
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 的相应值保持不变,就说明复制成功。