Web19.引用类型对象拷贝

来源:互联网 发布:新网域名怎么解析 编辑:程序博客网 时间:2024/06/08 16:59
































问题:

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

引用类型值(对象、数组、函数、正则表达式)保存在堆内存中的对象

非引用类型:数值  布尔值  null  undefined  保存在栈内存中的简单数据段



2.如下代码输出什么?为什么

第一个输出false   指针指向两个不同对象

第二个输出Object{a:1, b:2}

第三个输出true  第二个输出中将obj2的指针赋值给了obj1 指向了相同的对象, 所以相等



3.如下代码输出什么?为什么



输出结果:  1    a的值赋值给了aa   aa为1    a再更改为11 aa的值不变

                      2    b的值赋值给了bb   bb为2    b再更改为22 aa的值不变

                      {name: 'hello', age:2}      c和cc  指向同一个对象 所以    c.name更改后cc.name也会同步更改

                      [a,b, {name: 'hello', age:3}]  dd 和 d指向同一个对象  d[2]['age']变为3  dd[2]['age']也会同步更改



4.如下代码输出什么?为什么




5.过滤如下数组,只保留正数,直接在原数组上操作



function filter(arr){    for(i = 0; i < arr.length; i++){        if(arr[i] <= 0){            arr.splice(i, 1);            i--;      }   }}


6.过滤如下数组,只保留正数,原数组不变,生成新数组



function filter(arr){    var newArr = [];    for( var i = 0;  i<arr.length; i++){        if(arr[i] > 0){            newArr.push(arr[i]);        }   }   return newArr;}



7.写一个深拷贝函数,用两种方式实现


方式1:

     

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




方式2:

           

function deepCopy(obj){    var newObj = {}    newObj = JSON.parse(JSON.stringify(obj))    return newObj    }




原创粉丝点击