[英]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.