Как выполнить все методы, имена которых указаны в массиве?

262
03 июля 2017, 20:37

Есть массив с названиями методов. В конструкторе класса нужно запустить все эти методы по их именам. Например:

  class A {
      constructor(methods) {
        // methods == ["a", "c", "e"];
      }
      a() {
      }
      b() {
      }
      c() {
      }
      d() {
      }
      e() {
      }
  }

Необходимо, чтобы автоматически запустились и выполнились методы a, c и e этого класса. Запуск необходимо инициализировать прямо в конструкторе. Слышал, что можно использовать eval, но, вроде как, это плохое решение (но я не уверен). Короче говоря, ищу доступные варианты.

Answer 1

Внутри конструктора this указывает на создаваемый объект.

Для обращения к методу, имя которого находится в переменной, нужно использовать скобочную нотацию

Для прохода по всем элементам массива - forEach

В итоге получится:

methods.forEach(method=>this[method]());
Answer 2

class A { 
      constructor(methods) { 
		for (var i = 0; i < methods.length; i ++) { 
			this[methods[i]](); 
		} 
      } 
      a() { 
        console.log("a"); 
      } 
      b() { 
        console.log("b"); 
      } 
      c() { 
        console.log("c"); 
      } 
      d() { 
        console.log("d"); 
      } 
      e() { 
        console.log("e"); 
      } 
} 
 
new A(["a", "c", "e"]);

READ ALSO
Загрузка в браузере Chrome файла json - Node.js

Загрузка в браузере Chrome файла json - Node.js

ЗдравствуйтеДошел в учебнике по js до node

379
Проблема с бесконечным циклом (JS)

Проблема с бесконечным циклом (JS)

Добрый вечерПодскажите, пожалуйста, я новичок и пытаюсь написать алгоритм преобразования арабских чисел в римские

237
Почему не работает код игры &#171;угадай число&#187;?

Почему не работает код игры «угадай число»?

Вы забыли вызвать функцию guessingНужно добавить строчку

185