淺克隆

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];
  }
}