对象引用

concat方法拷贝原数组

对象引用(非对象直接量):concat方法会复制对象引用放到组合的新数组里,原数组和新数组中的对象引用都指向同一个实际的对象,所以,当实际的对象被修改时,两个数组也同时被修改.

第一个栗子

var arr1 = [1, 2, {a: 'test'}]
var arr2 = ['a', 'b', 'c']

var output = arr1.concat(arr2)
console.log(output) // output[2].a == 'test'
setTimeout(function(){
       arr1[2].a = 'has changed'
       console.warn(output)  //output[2].a == 'has changed'
}, 5000)

第二个栗子

var arr1 = [1, 2, 3]
var arr2 = ['a', 'b', 'c']

var output = arr1.concat(arr2)
console.log(output) 
setTimeout(function(){
     arr1[2] = 99
     console.warn(output)      //output值并不会改变
 }, 5000)

面试时被问到过的一道题,记忆犹新啊(为什么我没早看到这篇文章)。变量、对象傻傻搞不清楚。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基础类型有哪些?复杂类型有哪些?有什么特征?5种简单数据类型(基本数据类型):Undefined、Null、Boo...
    coolheadedY阅读 2,523评论 0 0
  • 如图所示的例子,这段程序中没有明显的错误,但是存在一个隐藏的问题(“内存泄漏”),随着垃圾回收活动的增加,或者由于...
    郭_4d5f阅读 3,203评论 0 0
  • 我的CSDN博客同步发布:JVM对象引用与内存分配策略 前两天对《深入理解虚拟机》一书做了个总结:《JVM理解其实...
    huachao1001阅读 5,212评论 2 12
  • 一、基础类型有哪些?复杂类型有哪些?有什么特征?基础类型值(数值、布尔值、null和undefined):指的是保...
    betterwlf阅读 2,312评论 0 0
  • 这一两年一直沉溺于各类大数据思潮和大数据相关的项目中。这几天静下心来,反思了下那些成功的,失败的,让我拍案叫绝的,...
    天外非仙阅读 4,881评论 1 8