javaScript 深/浅拷贝

1; javaScript  深/浅拷贝
    浅拷贝: 是copy 对象的引用地址, 改变引用地址值, 则改版复制对象也会改变。
    深拷贝: 深拷贝是彻底的复制该对象

2:  浅拷贝的实现方式:
    直接赋值
    Object.assign() // 一层是深拷贝,多层是浅拷贝
    ES6扩展运算符 // let newObj={ …obj }
    jQuery.extend方法 let newObj = jQuery.extend({}, obj);
    类数组对象拷贝 Array.from(array1) / Array.concat() / Array.slice()等等

3:  深拷贝的实现方式
    
    var newObj = JSON.parse(JSON.stringify(obj));
    jQuery.extend方法 var newObj = jQuery.extend(true, {}, obj);
    Object.assign() //一层是深拷贝,多层是浅拷贝
    jQuery.extend第一个参数指示是否深度合并
    // $.extend( [deep ], target, object1 [, objectN ] )
4:  函数的调用:
      var deepCopy = function(obj) {
      if (typeof obj !== 'object') return;
      var newObj = obj instanceof Array ? [] : {};
      for (var key in obj) {
	  if (obj.hasOwnProperty(key)) {
	    newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
        }
      }
      return newObj;
     }
     var obj = { a:1, arr: [1,2] };
     var newObj = deepCopy(obj);
     obj.arr[0] = 10;
     console.log(newObj.arr[0]); // 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值