注意了哦,别用clone()方法,clone()方法是针对文档对象的。
方法如下:
// 浅层复制(只复制顶层的非 object 元素) var newObject = jQuery.extend({}, oldObject); // 深层复制(一层一层往下复制直到最底层) 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 的相应值保持不变,就说明复制成功。
ExtJS 也有类似的方法 Ext.apply,因此单独用 ExtJS 应该也能实现同样的功能。