对象拷贝

帅比萌擦擦* 提交于 2020-02-23 09:47:26

浅拷贝;

概述: 拷贝就是拷贝指向对象的指针,意思就是说:拷贝出来的目标对象的指针和源对象的指针指向的内存空间是同一块空间,浅拷贝只是一种简单的拷贝,让几个对象公用一个内存,

// 人的对象;
    var Proson = {
      name: '小红',
      age: 18,
      score: 99,
      arr: [1, 2, 3, 4],
      interest: {
        song: '大约在冬季',
        skill: '技能',
        dance: '跳舞'
      }
    }

    // 学生的对象;
    var Student = {}

    // 利用for in 进行拷贝;
    for (const key in Proson) {
      Student[key] = Proson[key]
    }

    console.log(Proson)
    console.log(Student)

修改原对象的属性值;

    // 修改原对象的属性值;
    Proson.name = '赵丽颖'
    Proson.interest.skill = '射手'
    console.log(Proson)
    console.log(Student)
    // 打印的结果如下;

1581859040922

通过打印结果我们可以看到属性值是简单数据类型的那么数据的修改不会同步,但是属性值是引用类型的那么数据的修改便会同步;这是因为对于简单数据类型来说拷贝的是值,而对于复杂数据来说拷贝的只是引用的地址,指向的内存还是同一个;

缺点:只能拷贝第一层,第二层拷贝的是地址;

es6提供的新方法实现浅拷贝;

Object.assign(Student, Proson)

    Proson.name = '赵丽颖'
    Proson.interest.skill = '射手'
    console.log(Proson)
    console.log(Student)

打印结果与上图一样;

深拷贝;

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!