jquery之深拷贝与浅拷贝

2017-05-08  本文已影响0人  believedream

最近看别人家自己封装的框架,看到了使用了 $.extend(true,obj,obj.....);,当时候没看明白,后来网上查了一下,这个与深拷贝与浅拷贝有关的
1.我们看下jquery的使用方法;

var obj1 = {
       apple: 0,
       banana: {weight: 52, price: 100},
       cherry: 97
   };
   var obj2 = {
       banana: {price: 200},
       durian: 100
   };
var obj=$.extend(true,{},object1,object2);
console.log(obj);

解释:有true就是深拷贝,没true就是浅拷贝;
上面的代码还是很容易看明白的啦,在这里不做太多讲解;接下来我们将自己封装的深拷贝函数与浅拷贝函数;
深拷贝函数:

function copy(object1,object2){
        var obj={};
                //由于js函数对象是引用关系,所以要重新构造一个obj;
        for(var k in object1){
            obj[k]=object1[k];
        }
            
        for(var k in object2){
            //如果obj2的键值对在obj中不存在,那么我们把它放到obj中去
            if(!obj[k] || typeof obj[k] != "object"){
                obj[k]=object2[k];
                continue;
            }           
            if(typeof obj[k] == "object"){
                obj[k]=copy(obj[k],object2[k]);
            }
        }       
        //返回一个对象
        return obj;         
    }
上一篇下一篇

猜你喜欢

热点阅读