Javascript Поиск, существует ли функция / класс перед вызовом - PullRequest
2 голосов
/ 13 июля 2011

Я знаю, как проверить, существует ли свойство глобального контекста. Любая вариация

if (typeof myFunction != 'undefined'){...}

а что если я не знаю название функции? Я думаю, что в глобальном масштабе я мог бы сделать это

if (typeof this['myFunction'] != 'undefined'){...}

но я не знаю, как это сделать в такой функции

function load(functionName){
  if (typeof GLOBALCONTEX[functionName] != 'undefined'){
    GLOBALCONTEX[functionName](arg1 , arg2 , ...);
  }
}

И я не хочу использовать try / catch, так как слышал, что это медленно.

Ответы [ 3 ]

8 голосов
/ 13 июля 2011

Если вы работаете с браузером, замените GLOBALCONTEX на window. Пример:

function load(functionName){
  if (typeof window[functionName] != 'undefined'){
   window[functionName](arg1 , arg2 , ...);
  }
}
0 голосов
/ 13 июля 2011

Globalcontext - это окно.Все объекты прикреплены к нему.

function load(functionName){
      if (typeof window[functionName] != 'undefined'){
        window[functionName](arg1 , arg2 , ...);
      }
    }
0 голосов
/ 13 июля 2011

В браузере глобальный объект имеет вид window [документы] .Если вы используете другую среду выполнения JavaScript (например, Node.js), посмотрите в ее документации, чтобы узнать имя / ссылку на глобальный объект.

Конечно, такой тест работает только для функций, которые определеныв глобальном масштабе, а не в более высоком объеме.Возможно, такая функция доступна (и доступна), но не входит в глобальную область.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...