淺克隆
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];
}
}