gpt4 book ai didi

javascript - 对象数组之间的区别

转载 作者:行者123 更新时间:2023-11-30 08:19:18 29 4
gpt4 key购买 nike

我试图将一个对象插入数组。它成功地插入到数组中。这三个代码有什么区别。

Array.push(Object.assign({}, JSON.parse(JSON.stringify(Object))))
Array.push(Object.assign({},Object))
Array.push(Object)

最佳答案

首先,如果您重新定义了全局对象,此代码可能无法工作 - Object.assign 是一个静态方法,但是因为您将 Object 视为实际对象(Object 的一个实例),然后无法通过该方法访问它。

代码只有在您重命名变量时才有效——我只是将它们小写了——或者如果您意识到您正在将 Object 函数推送到数组。

第一行:

array.push(Object.assign({}, JSON.parse(JSON.stringify(object))));

object 的深拷贝推送到数组。深拷贝意味着没有引用——两者是完全不同的对象。修改原始object 不会修改arrayobject 的深拷贝。函数和方法将被剥离,所有 undefined 值也将被剥离。循环引用(如 window.window.window...)也会失败(因为您试图在字符串中放置无限数量的字符 - 这绝不是一个好主意

第二行:

array.push(Object.assign({}, object));

对象浅拷贝推送到数组。这意味着对象本身的属性将按值复制,但嵌套对象内的属性将按引用复制。

第三行:

array.push(object);

将对object 的引用推送到array 中。这意味着如果 object 被修改,array 中的 object 也会被修改。

关于javascript - 对象数组之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56661187/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com