这是在ES6中克隆对象的好方法吗?
2022-08-30 01:38:30
谷歌搜索“javascript克隆对象”带来了一些非常奇怪的结果,其中一些已经过时了,有些太复杂了,这难道不是那么容易吗:
let clone = {...original};
这有什么问题吗?
谷歌搜索“javascript克隆对象”带来了一些非常奇怪的结果,其中一些已经过时了,有些太复杂了,这难道不是那么容易吗:
let clone = {...original};
这有什么问题吗?
这有利于浅层克隆。对象传播是 ECMAScript 2018 的标准部分。
对于深度克隆,您需要一个不同的解决方案。
const clone = {...original}
到浅层克隆
const newobj = {...original, prop: newOne}
以不可变方式将另一个 prop 添加到原始属性中,并存储为新对象。
编辑:当这个答案发布时,语法在大多数浏览器中不可用。如今,您应该可以使用它(除非您需要支持IE 11)。{...obj}
使用 Object.assign。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
var obj = { a: 1 };
var copy = Object.assign({}, obj);
console.log(copy); // { a: 1 }
但是,这不会成为深度克隆。目前还没有原生的深度克隆方法。
编辑:正如评论中提到的@Mike“Pomax”Kamermans,您可以使用JSON.parse(JSON.stringify(input))