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