Доступ к объекту объекта с переменной и возвратом к свойству по умолчанию, если он не существует

Я новичок в инструкции switch в Javascript. Самое приятное в том, что он объединяет несколько операторов if с результатом по умолчанию, если все, если не удалось.

Я любопытный человек и хотел бы знать, как этот «дефолт», если все остальное не удалось, может быть достигнуто с помощью свойства объекта select с переменной.

Пример:

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. Но что произойдет, если свойство не существует? Затем я хотел бы запустить свойство default.

У кого-нибудь есть идея, как это можно сделать?


Обновить:

Я нашел одно возможное решение, но для этого требуется другое выражение 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();

Всего 1 ответ


Вы можете использовать логический оператор 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();

Есть идеи?

10000