引用类型 深拷贝

基本类型、引用类型

基本类型值(数值、布尔值、字符串、null和undefined):指的是保存在栈内存中的简单数据段;
引用类型值(对象、数组、函数、正则):指的是那些保存在堆内存中的对象,变量中保存的实际上只是一个指针,这个指针执行内存中的另一个位置,由该位置保存对象

简单一句话,基本类型保存的是简单数据段。引用类型保存的是堆内存的对象,变量其实是一个指针,可以理解为地址,在这个指针上进行改变的话那么再引用出来的就是不一样的值。

对象的深拷贝、浅拷贝


//浅拷贝
  function shallowCopy(oldObj) {
        var newObj = {};
        for(var i in oldObj) {
            if(oldObj.hasOwnProperty(i)) {
                newObj[i] = oldObj[i];
            }
        }
        return newObj;
    }


    

//深拷贝

function deepCopy(oldObj) {
        var newObj = {};
        for(var key in oldObj) {
            if(typeof oldObj[key] === 'object') {
                newObj[key] = deepCopy(oldObj[key]);
            }else{
                newObj[key] = oldObj[key];
            }
        }
        return newObj;
    }

你可能感兴趣的:(引用类型 深拷贝)