对象拷贝

Posted ywnh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象拷贝相关的知识,希望对你有一定的参考价值。

浅拷贝;

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

// 人的对象;
    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)

打印结果与上图一样;

深拷贝;

以上是关于对象拷贝的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

SQL Select 语句的用法

使用嵌套片段和动画对象