码迷,mamicode.com
首页 > 其他好文 > 详细

对象拷贝

时间:2020-02-23 09:50:51      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:会同   方法   内存   利用   属性   数据   OLE   student   图片   

浅拷贝;

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

// 人的对象;
    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)
    // 打印的结果如下;

技术图片

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

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

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

Object.assign(Student, Proson)

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

打印结果与上图一样;

深拷贝;

对象拷贝

标签:会同   方法   内存   利用   属性   数据   OLE   student   图片   

原文地址:https://www.cnblogs.com/ywnh/p/12348521.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!