簡體   English   中英

如何有條件地向對象添加屬性

[英]How can I add a property to an object conditionally

我已經讀過這篇在 Javascript 中,如何有條件地向對象添加成員? 但就我而言,它不起作用。

我有以下情況:

angular.forEach(vm.someData.entities, entity => {
  ...(entity.type === "section" && { entity.styleFormats = entity[`${vm.activeTab}StyleFormats`]});
  entity.content = entity[`${vm.activeTab}Content`];
  entity.stateClasses = determinateStateClasses(false);
  entity.isNew = false;
});

展開運算符給了我一個解析錯誤。

不要在此處使用擴展運算符。 在構造對象字面量時使用該運算符,這不是您在這里所做的。 您只是在函數中編寫一行代碼。

可以使用&&短路來執行預期的操作:

entity.type === "section" && entity.styleFormats = entity[`${vm.activeTab}StyleFormats`];

但這有點不清楚。 通常,在解析一個值時使用這種短路,而不是在執行操作時使用。 將此視為在結構上類似於使用條件運算符 ( ?: ) 與使用if塊之間的區別。 前者不是后者的直接替代品,它們有自己的用途。

在這種情況下,您要做的是有條件地在您的函數中執行操作。 正是if塊的用途:

if (entity.type === "section") {
    entity.styleFormats = entity[`${vm.activeTab}StyleFormats`];
}

基本上,不要試圖盡可能地編寫最聰明的代碼,而要盡可能地編寫最清晰的代碼。 沒有理由避免使用if塊。

暫無
暫無

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

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