首页 > 其他分享 >深拷贝与浅拷贝的区别?如何实现一个深拷贝?

深拷贝与浅拷贝的区别?如何实现一个深拷贝?

时间:2023-01-15 01:55:06浏览次数:34  
标签:obj 区别 数据类型 prop 如何 引用 类型 拷贝

一、数据类型存储

  JavaScript中存在两大数据类型:

  • 基本类型
  • 引用类型

基本类型数据保存在在栈内存中

引用类型数据保存在堆内存中,引用数据类型的变量是一个指向堆内存中实际对象的引用,存在栈中

二、浅拷贝

浅拷贝,指的是创建新的数据,这个数据有着原始数据属性值的一份精确拷贝

如果属性是基本类型,拷贝的就是基本类型的值。如果属性是引用类型,拷贝的就是内存地址

即浅拷贝是拷贝一层,深层次的引用类型则共享内存地址

下面简单实现一个浅拷贝

function shallowClone(obj) {
    const newObj = {};
    for(let prop in obj) {
        if(obj.hasOwnProperty(prop)){
            newObj[prop] = obj[prop];
        }
    }
    return newObj;
}

 

标签:obj,区别,数据类型,prop,如何,引用,类型,拷贝
From: https://www.cnblogs.com/chccee/p/17052962.html

相关文章