引用类型对象拷贝

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

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

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

代码1.jpg
引用类型对象拷贝_第1张图片
1答案.jpg

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

引用类型对象拷贝_第2张图片
代码2.jpg
引用类型对象拷贝_第3张图片
2答案.jpg

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

引用类型对象拷贝_第4张图片
3.jpg

引用类型对象拷贝_第5张图片
3答案.jpg

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

代码4.jpg
引用类型对象拷贝_第6张图片
4答案.jpg

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

代码5.jpg
引用类型对象拷贝_第7张图片
5答案.jpg

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

方法1

    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;
    }

方法2

      function deepCopy2(obj){
      return JSON.parse(JSON.stringify(obj));
      }
      var obj3 = {
        name:"ruoyu",
        age:20
      }
      var obj4 = deepCopy2(obj3);
      console.log(obj4);
      obj3.age = 33;
      console.log(obj4.age);

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