Javascript 数组推送更新也克隆了对象

标签 javascript

我刚刚注意到克隆和推送项目有些奇怪。这是示例:

let a = { foo: [1,2] };
let b = Object.assign({}, a) // cloning object and getting new reference
a === b // gives false which is what I want

现在我在对象 a 上执行 push:

a.foo.push(3)

现在 a.foo[1,2,3]b.foo 也是 [1,2, 3]

但如果我这样做

a.foo = a.foo.concat(4)

a.foo[1,2,3,4]b.foo[1,2, 3]

问题是:为什么会这样?

最佳答案

a.foo 和 b.foo 指向相同的引用,但是 .concat() 返回一个新数组,因此它们现在指向 2 个不同的数组引用

关于Javascript 数组推送更新也克隆了对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44647197/

相关文章:

javascript - 使用javascript格式化货币

javascript - 检测二维阵列模式中的闭环

javascript - 用javascript解析多个文件 : the same file in for-loop

javascript - 我在 data 属性中有一个变量,并从 prop 传递相同的变量。为什么 {{}} 模板显示 prop 中的值而不是 data

javascript - nginx 与 javascript 文件过期(由 PHP 动态生成)

javascript - 在 bootstrap 中环绕一组 div 的问题

javascript - 重定向到在 angularjs 中不起作用的网页

javascript - 如何在代码隐藏中访问 session 变量

javascript - 每分钟 JSON 文件解析和合并

javascript - Angular ng-hide 在指令中不起作用