美文网首页
jquery之深拷贝与浅拷贝

jquery之深拷贝与浅拷贝

作者: believedream | 来源:发表于2017-05-08 17:56 被阅读0次

    最近看别人家自己封装的框架,看到了使用了 $.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;         
        }
    

    相关文章

      网友评论

          本文标题:jquery之深拷贝与浅拷贝

          本文链接:https://www.haomeiwen.com/subject/awqvtxtx.html