美文网首页
JS 浅拷贝与深拷贝

JS 浅拷贝与深拷贝

作者: 麻辣小面瘫 | 来源:发表于2018-01-15 21:45 被阅读0次

1.浅拷贝(引用类型的复制都是浅拷贝)

var arr1 = [1,2,3,4];
arr2 = arr1;
arr2.push(5);
console.log(arr1);//[1,2,3,4,5]

2.对象的浅拷贝

function copy(obj){
  var tempObj = {};
  for(var i in obj){
    tempObj[i] = obj[i]; //属性复制
  }
  return tempObj
}
var Person = {
  name:'person',
  skills:['g','s','m']
}
var newPerson = copy(Person);
console.log(Person.skills ) ;//['g','s','m'];
newPerson.skills.push('b');
console.log(Person.skills); // ['g','s','m','b']; 浅拷贝,只是拷贝了指向引用类型的地址
console.log(newPerson .skills); // ['g','s','m','b']; 

2.对象的深拷贝(在浅拷贝的基础上递归调用)

function deepCopy(obj, newObj) {
  var tempObj= newObj || {};
  for (var i in obj) {
    if (typeof obj[i] === 'object') {
      tempObj[i] = (obj[i].constructor === Array) ? [] : {};
      deepCopy(obj[i], tempObj[i]);
    } else {
      tempObj[i] = obj[i];
    }
  }
  return tempObj;
};
var Person = {
  name:'person',
  skills:['g','s','m']
}
var newPerson = deepCopy(Person);
console.log(Person.skills ) ;//['g','s','m'];
newPerson.skills.push('b');
console.log(Person.skills); // ['g','s','m']; 
console.log(newPerson .skills); // ['g','s','m','b']; 

相关文章

  • JS中的深拷贝与浅拷贝

    知乎:js中的深拷贝和浅拷贝? 掘金: js 深拷贝 vs 浅拷贝 前言 首先深拷贝与浅拷贝只针对 Object,...

  • js浅拷贝深拷贝

    js浅拷贝,深拷贝的简单实现 基础数据 浅拷贝 深拷贝

  • 浅拷贝和深拷贝

    本文参考:JavaScript中的浅拷贝和深拷贝js 深拷贝 vs 浅拷贝深入剖析 JavaScript 的深复制...

  • js面试题

    1,js的深拷贝与浅拷贝 如何区分深拷贝与浅拷贝,简单点来说,就是假设B复制了A,当修改A时,看B是否会发生变化,...

  • JS实现深拷贝、instanceof、判断是否为数组

    JS深拷贝 JS中拷贝对象可以按照拷贝的程度可以分为浅拷贝和深拷贝,有些时候我们需要拷贝之后的对象和拷贝之前的对象...

  • JS中对象的复制

    JS中的对象复制分为两种情况:深拷贝和浅拷贝。深拷贝和浅拷贝的区别在于对数组和对象的拷贝,对它们拷贝时浅拷贝只是拷...

  • 认识js下的浅拷贝与深拷贝

    浅拷贝与深拷贝 首先深拷贝和浅拷贝只针对像 Object, Array 这样的复杂对象的。简单来说,浅拷贝只拷贝一...

  • iOS深拷贝(MutableCopy)与浅拷贝(Copy)的区别

    深拷贝和浅拷贝的概念 iOS中有深拷贝和浅拷贝的概念,那么何为深拷贝何为浅拷贝呢?浅拷贝:浅拷贝并不拷贝对象本身,...

  • Objective-C中的浅拷贝和深拷贝

    Objective-C中的浅拷贝和深拷贝IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解iOS ...

  • 深拷贝和浅拷贝

    干货!深拷贝和浅拷贝的区别 深拷贝才是拷贝,浅拷贝就是Retain Copy与Retain的区别 Copy: 根据...

网友评论

      本文标题:JS 浅拷贝与深拷贝

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