Как вызвать функцию, если её имя является свойством объекта?

140
03 июня 2019, 23:20

Как я понял, если бы имя функции было бы значением объекта, проблем бы не было. Но как перебрав объект oError можно вызвать функции required и minlength ? Спасибо =)

UPD: Вот сейчас подумал добавить все нужны функции в ещё один объект. И от туда их вызывать. Поправьте если это не правильно и нужно как то по другому делать или просто есть какие то другие способы.

var oError = { 
  username: { 
      required: true, 
      minlength: 4 
  }  
}; 
var oFunc = {  
    required: function() { alert('Функция required сработала.'); },  
    minlength: function() { alert('Функция minlength сработала.'); }  
}  
for ( var index in oError['username'] ) { 
  oFunc[index](); 
}

Answer 1

Если правильно тебя понял. Все глобальные функции доступны в объекте window. В твоем случае мы можем к ним обратиться вызывая window["имя функции"] и вызвать, добавив скобки.

var oError = { 
  username: { 
      required: true, 
      minlength: 4 
  }  
}; 
 
function required () { 
  alert('Функция required сработала.'); 
} 
function minlength () { 
  alert('Функция minlength сработала.'); 
} 
 
for (let key in oError) { 
    for (let functionName in oError[key]) { 
        window[functionName](); 
    } 
}

READ ALSO
3D графики в Java Script

3D графики в Java Script

Есть ли в js какая-нибудь библиотека, которая рисует такие графики?

137
Что создается раньше var или function в javascript?

Что создается раньше var или function в javascript?

Что создается раньше var "x=0;" или "function y(){};" в javascript?

125
Как вычислить значение функции в строке подставляя значения в JS

Как вычислить значение функции в строке подставляя значения в JS

Как можно вычислять значение математической функции представленную в виде строки?

128
Как завершить все события и циклы внутри функции jquery

Как завершить все события и циклы внутри функции jquery

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

155