美文网首页
引用类型与对象拷贝

引用类型与对象拷贝

作者: 101架钢琴 | 来源:发表于2017-03-10 12:16 被阅读0次

    1.引用类型有哪些?非引用类型有哪些

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

    2、

    Paste_Image.png

    console.log(obj1 == obj2);输出:false,obj1和obj2分别是指一个指针,指向不同的地址
    console.log(obj1 = obj2);输出:object{a:1,b=2}将obj2赋值给obj1
    console.log(obj1 == obj2);输出:true经过obj1 = obj2后,两个指向相同的地址

    3、

    Paste_Image.png Paste_Image.png

    4、

    Paste_Image.png Paste_Image.png

    5、

    Paste_Image.png

    6、

    Paste_Image.png

    7、

    方法一:
    function deepCopy(obj){
    var newObj={};
    for(key in obj){
    if(typeof obj[key]==="number" || typeof obj[key]==="string" || typeof obj[key]==="boolean"
    || obj[key]===undefined || obj[key]===null){
    newObj[key]=obj[key];
    }
    else{
    newObj[key]=deepCopy(obj[key]);
    }
    }
    return newObj;

    方法二:
    function deepCopy(obj){
    var newObj={};
    var newArr=[];
    newArr=JSON.stringify(obj);
    newObj=JSON.parse(newArr);
    return newObj;
    }

    相关文章

      网友评论

          本文标题:引用类型与对象拷贝

          本文链接:https://www.haomeiwen.com/subject/jdlngttx.html