浅克隆
Version >= 6
ES6 的 Object.assign()
函数可用于将现有 Object
实例中的所有可枚举属性复制到新实例。
const existing = { a: 1, b: 2, c: 3 };
const clone = Object.assign({}, existing);
除了 String
之外,这还包括 Symbol
属性。
对象休息/扩散解构当前是第 3 阶段提议,它提供了一种更简单的方法来创建对象实例的浅克隆:
const existing = { a: 1, b: 2, c: 3 };
const { ...clone } = existing;
如果你需要支持旧版本的 JavaScript,那么克隆 Object 的最兼容方法是手动迭代其属性并使用 .hasOwnProperty()
过滤掉继承的属性。
var existing = { a: 1, b: 2, c: 3 };
var clone = {};
for (var prop in existing) {
if (existing.hasOwnProperty(prop)) {
clone[prop] = existing[prop];
}
}