js克隆对象

来源:互联网 发布:机器人编程怎么入门 编辑:程序博客网 时间:2024/05/29 15:50

为什么要有克隆方法呢?因为JS中的对象赋值不像C,C++那样,新开辟一个空间,而是直接指向那个对象的引用,两个值会互相影响。

如下图:




克隆对象的方法

1.如果是对象,得将其属性一个一个赋值过去

 clone: function(obj){            if(this.isArray(obj)){                var arr = [];                for(var i = 0; i < obj.length; i++){                    arr.push(this.clone(obj[i]));                }                return arr;            }            if(!this.isObject(obj)) return obj;            if(obj == null) return obj;            var myNewObj = new Object();            for(var i in obj){                myNewObj[i] = this.clone(obj[i]);            }            return myNewObj;        }

2.用JSON的形式,生成JSON,复制,然后转为新的对象。

clone: function(obj){            var json = JSON.stringify(obj);            var newObj = JSON.parse(json);            return newObj;        }


第二种比较简单点,哈哈~~~
然后数组的话,还可以用数组自己的方法arr.splice(0)或arr.concat();就完成了复制。


JQuery的方法:

深复制【可以迭代】:var newJson = jQuery.extend(true,{}, json,...);

浅复制【不能迭代】:var newJson = jQuery.extend({}, json,...);

var newJson = $.map(json,function (n) { return n; });



0 0
原创粉丝点击