Как получить имя метода из файла JavaScript - PullRequest
0 голосов
/ 03 августа 2011

У меня есть файл JavaScript со многими методами, определенными в нем. Есть ли способ узнать, сколько методов в этом файле и как называются методы?

Ответы [ 4 ]

2 голосов
/ 03 августа 2011

Хотя теоретически вы можете попытаться найти все, что соответствует шаблону:

function <name>(

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

var <name> = function() {}

И эти:

function returnFunc() {
    return function() {...}
}
var <name> = returnFunc();

А также эти:

obj.member = new Function();

И почти бесконечное множество похожих определений функций.

Итак, ответ, скорее всего, вы не можете. Если код не очень узко построен.

2 голосов
/ 03 августа 2011

Короткий ответ - «нет».

Длинный ответ: если JS-файл ваш JS-файл, т. Е. Вы управляете контентом, то есть несколько способов:Вы можете структурировать код, который позволит вам получить количество или список имен функций.Очевидно, что это не поможет вам с чужим кодом.Извиняюсь, если вы уже знаете все это, но на всякий случай не знаете: как правило, неплохо бы обернуть все ваши «библиотечные» функции как свойства одного объекта, что-то вроде этого:

var myFunctionLibrary = {
  doSomething         : function() {},
  somethingElse       : function() {},
  nonFunctionProperty : "test",
  // etc.
}

Это создает одну глобальную переменную с именем myFunctionLibrary, которая является объектом со свойствами, которые являются ссылками на функции.(Примечание: есть несколько других способов достижения аналогичного эффекта, и я предпочитаю этот способ, но для целей этого объяснения это кажется самым простым.) Затем вы получаете доступ к функциям, говоря:

myFunctionLibrary.doSomething();
// or
myFunctionLibrary["doSomething"]();

Поскольку все ваши функции содержатся в определенном объекте, вы можете выполнять итерации по ним, как и любой другой объект:

var funcCount = 0;
var propCount = 0;
for (fn in myFunctionLibrary) {
  if (typeof myFunctionLibrary[fn] === "function"){
    funcCount++;
    alert("Function name: " + fn);
  } else {
    propCount++;
  }
}

alert("There are " + funcCount + " functions available, and "
      + propcount + " other properties.");

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

2 голосов
/ 03 августа 2011

Есть ли способ узнать, сколько методов существует в Java Script и как называются методы?

Прочитать источник или документацию (если есть).

Если вы ищете какую-то функцию «список доступных методов», ее нет.Написание одного было бы эквивалентно написанию парсера JavaScript и, возможно, даже компилятора.

Удачи с этим.: -)

0 голосов
/ 04 августа 2011

Напишите программу для загрузки вашего файла в Rhino, а затем просмотрите словари и посмотрите, что у вас есть.

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