Как избавиться от повторного написани кода
Подскажите каким способом можно избавиться от дублирования вызова методов.
Пытался использовать example.[flag]('dima1') но это не валидно. Править класс Example нельзя
class Example{
and(text) {
console.log(text, '-and')
}
or(text) {
console.log(text, '-or')
}
}
const example = new Example()
const flag = 'and'
if (flag === 'and') {
example.and('dima1')
example.and('dima2')
example.and('dima3')
} else {
example.or('dima1')
example.or('dima2')
example.or('dima3')
}
Ответы (2 шт):
Автор решения: Руслан Мамедов
→ Ссылка
Как вариант.
class Example{
printWithPostfix(text, postfix) {
console.log(`${text}-${postfix}`)
}
}
const example = new Example()
let flag = 'and'
example.printWithPostfix('dima1', flag)
example.printWithPostfix('dima2', flag)
example.printWithPostfix('dima3', flag)
flag = 'or'
example.printWithPostfix('dima1', flag)
example.printWithPostfix('dima2', flag)
example.printWithPostfix('dima3', flag)
Если менять класс Example нельзя, то избавиться от дублирования можно следующим образом.
example['and']('dima1')
example['and']('dima2')
example['and']('dima3')
example['or']('dima1')
example['or']('dima2')
example['or']('dima3')
Автор решения: Dmitry
→ Ссылка
class Example {
and(text) {
console.log(text, '-and')
}
or(text) {
console.log(text, '-or')
}
}
const example = new Example();
const flag = 'and';
['dima1', 'dima2', 'dima3'].forEach(example[flag]);