Краткое введение:
Я пытаюсь получить номер строки определения функции для анализа комментариев документации только к общедоступным материалам. Я дошел до того, что смог найти имя функции и, если бы захотел, мог бы выполнить функцию, но, похоже, не могу придумать, как извлечь информацию о номере строки. Примечание: это только для целей документирования, поэтому кросс-браузер не нужен.
Я знаю, что firebug (но не firebug lite, так что я не знаю, насколько это возможно) показывает номер строки и расположение скрипта ссылочной функции при наведении курсора мыши. Я просмотрел источник firebug и дошел до того, что обнаружил, что они вызывают (domPanel.js:536
), но не могу найти эту функцию "addMember" где-нибудь в их источнике:
this.addMember(object, "userFunction", userFuncs, name, val, level, 0, context);
Может быть, это просто невозможно определить. Мои запасные варианты используют [userfunction].name
и [userfunction].toSource()
, а затем пытаются сопоставить источник с источником. Но я бы хотел избежать этого, если это возможно, поскольку имя может быть неуникальным, а метод toSource () предоставляет постобработку источника. Может быть, есть способ привязать к API Firebug?
Минимальный код объяснения:
[Обратите внимание, цель будет получить эту информацию: window.MyWindowObject.PublicFunction: script.js line 3
]
script.js
(function () {
function referencedFunction() {
///<summary>Sample XML Doc Comment</summary>
alert('well hello there!');
}
var publicObject = window.MyWindowObject || {};
publicObject.PublicFunction = referencedFunction;
window.MyWindowObject = publicObject;
}());
index.htm
<!DOCTYPE html>
<html>
<script src="script.js"></script>
</html>
РЕДАКТИРОВАТЬ: для тех, кто находит это в поиске позже, есть другая полезная информация, которую я нашел:
Stacktrace.js: https://github.com/eriwen/javascript-stacktrace
- Довольно близко, но не совсем то, что я хочу, так как кажется, что оно не определяет окончательную функцию. Пример на их сайте не верный (хотя демо-версия «выглядит» так, как я хотел)
В chrome (и IE9): [userfunction].toString()
сохраняет комментарии (не в Firefox), что я, вероятно, в конечном итоге и буду использовать. Я собирался использовать Firefox [userfunction]
.toSource (), но это похоже на манипулируемый браузером источник функции. * Firefox [userfunction]
.toString (), кажется, сохраняет код, но удаляет комментарии