簡體   English   中英

以正確的方式刪除對象上的屬性

[英]Deleting a property on an object in the right way

var actual = { first: 1, second : 2 }
var copy = actual;

delete copy.first;

當我控制台記錄副本時,它沒有第一個屬性,但是當我控制台日志實際時,即使那個對象也沒有第一個屬性。

有人可以解釋一下這里發生了什么嗎? 以及如何避免這種情況?

預期:

actual: { first: 1, second : 2 }
Copy: { second: 2 }

PS:我知道我可以直接在復制對象上分配第二個屬性,而無需復制,這只是一個例子。 我正在處理非常大的對象。 因此,我必須復制然后刪除屬性,而不影響實際對象。

謝謝

您可以使用JSON.stringify()JSON.parse()或@elclanrs建議的Object.assign()

var actual = { first: 1, second : 2 }
var copy = JSON.parse(JSON.stringify(actual));
delete copy.first;

var actual = { first: 1, second : 2 }
var copy = Object.assign({}, actual);
delete copy.first;

您沒有復制對象,而只是復制了引用。 如果要復制對象,請考慮使用ES6 Object.assignlink )或lodash的assignlink )。

Object.assign將對象作為參數。 對象的所有屬性都將復制到參數列表中的第一個對象,並返回對第一個對象的引用。

var actual = { first: 1, second : 2 };
var copy = Object.assign({}, actual);

delete copy.first;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM