簡體   English   中英

訪問帶有變量的對象屬性,如果不存在則回退到默認屬性

[英]Access object property with variable and fallback to default property if non-existing

我是 Javascript 中switch語句的新手。 很酷的一點是,它結合了多個 if 語句和一個默認結果,如果所有 if 都失敗了。

我是一個好奇的人,想知道如果所有其他方法都失敗了,如何使用帶有變量的對象屬性選擇來實現這個“默認值”。

例子:

const action.type = "non-existing-property";

const runF = {
  CREATE_PROJECT_SUCCESS: () => {
    console.log("created project");
    return state;
  },
  CREATE_PROJECT_ERROR: () => {
    console.log("create project error");
    return state;
  },
  default: ()=>{
    console.log("Do default stuff if all else failed");
    return state;
  }
}[action.type];
runF();

通常 action.type 值是 CREATE_PROJECT_SUCCESS 或 CREATE_PROJECT_ERROR。 但是,如果該屬性不存在會發生什么? 然后我想運行默認屬性。

任何人都知道如何做到這一點?


更新:

我找到了一個可能的解決方案,但這需要另一個 if 語句。 我希望看到一個更小、更快速的解決方案。 const action.type = "不存在的屬性";

let runF = {
  CREATE_PROJECT_SUCCESS: () => {
    console.log("created project");
    return state;
  },
  CREATE_PROJECT_ERROR: () => {
    console.log("create project error");
    return state;
  }
}[action.type];

if (!runF) {
  //runF not defined/valid -> run default function
  runF = () => {
    console.log("Do default stuff if all else failed");
    return state;
  };
}

runF();

您可以在屬性訪問器中使用邏輯 OR 運算符 ( || ) 來實現回退到默認屬性名稱。 像這樣的東西:

const runF = {
  CREATE_PROJECT_SUCCESS: () => {
    console.log("created project");
    return state;
  },
  CREATE_PROJECT_ERROR: () => {
    console.log("create project error");
    return state;
  },
  default: ()=>{
    console.log("Do default stuff if all else failed");
    return state;
  }
}[action.type || 'default'];
runF();

暫無
暫無

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

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