Одним из вариантов будет использование объекта , содержащего функции, а не наличие нескольких автономных функций.Затем просто используйте поиск свойства.
Для этого точного кода, однако, вы можете сделать его даже DRY-er, используя Proxy
, чтобы проверить, к какому свойству обращались, вместо того, чтобы иметь несколько свойств (потому что всеВаши свойства / функции имеют общую функциональность):
const condition = 'hi';
const fns = new Proxy({}, { get: (_, prop) => {
console.log(prop + ' is called');
}});
const props = ['hi', 'bye', 'greeting'];
if (condition.includes('happy')) {
fns.happy();
} else if (fns[condition]) {
fns[condition]();
}
Это очень СУХОЙ, но довольно странный вариант - в большинстве случаев вы бы вместо этого использовали объект:
const fns = {
hi() {
console.log('hi is called');
},
bye() {
console.log('bye is called');
},
greeting() {
console.log('greeting is called');
},
happy() {
console.log('happy is called');
}
}
const condition = 'hi';
if (condition in fns) {
fns[condition]();
} else if (condition.includes('happy')) {
fns.happy();
}