簡體   English   中英

您可以在不改變數據的情況下覆蓋對象文字定義中的屬性嗎?

[英]Can you overwrite a property in the definition of an object literal without mutating data?

在關於不變更新模式的redux文檔中,我注意到他們說您可以通過使用spread運算符來更新對象,然后覆蓋屬性。

對象傳播運算符有什么特別之處嗎? 如果不是,那么為什么您可以覆蓋對象文字的定義中的屬性(如下面的代碼所示)而不更改數據?

const a = {
  foo: 'bar',
  foo: 'bla'
}

在對象字面量中,我們可以使用傳播運算符(...)將屬性從給定對象插入到對象字面量中...因此,如果您具有:

const a = {
  foo: 'bar',
  test: 'test'
}

可以使用對象文字定義中的傳播運算符來創建新對象。

const b = {
   ...a, //spread operator that introduces object properties
   foo:'bla'
}

b對象將是

{ foo: 'bla', test: 'test' }

考慮到如果兩個屬性具有相同的名稱,則該順序將定義哪個屬性具有優先級,實際上我們可以覆蓋對象文字中的屬性定義。

如果定義是:

const b = {
   foo:'bla',
   ...a, //the spread operator is defined at the end
}

b對象將是:

{foo: "bar", test: "test"}

參考這篇文章

注意:這是ES2018提案,當前在chrome中工作。

暫無
暫無

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

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