Добавить свойство sourceLocation в функцию? - PullRequest
1 голос
/ 18 января 2012

в качестве ответа на вопрос как определить источник информации о обратном вызове в v8 , у меня следующий вопрос:

Если я посмотрю насвойства функции. Я вижу, что у нее есть имя, длина и т. д. Можно ли автоматически добавить свойство ко всем функциям, взломав конструктор объекта «Функция»?Если так, как это должно быть сделано?Я хотел бы добавить свойство с именем 'source_location'

function foo() {
}

console.log(foo.name); //works out of the box
console.log(foo.source_location); //can I make this work?

1 Ответ

0 голосов
/ 05 мая 2012

Вы можете использовать объект отладчика v8.

Источник

// test.js

function bar() {
}

function foo() {
}

foo.source_location = debug.Debug.findFunctionSourceLocation(foo);

console.log(foo.name);
console.log(foo.source_location);
console.log(foo.source_location.script.name);

Выполнить

node --expose-debug-as=debug test.js

выход

foo 
{ script: {}, // script object 
  position: 106,
  line: 5,
  column: 12,
  start: 94,
  end: 110 }
/home/skomski/test.js

Ссылки

http://code.google.com/p/v8/source/browse/trunk/src/debug-debugger.js#586

...