2013-10-11 3 views
4

Мне любопытно, есть ли способ получить имя ссылочного объекта из пойманного ReferenceError. Например:Получить имя объекта из ReferenceError

try{ 
    foo; 
} catch(e){ 
    e.message; // "ReferenceError: foo is not defined" 
} 

Есть еще одно свойство холдинг "Foo"? Я хотел бы создать что-то вроде missing_method в ruby, если это возможно. За исключением переменного доступа, поэтому я не беспокоюсь о потере args/context. Кажется, это один из крупных блокаторов.

+0

Здесь вы можете найти все стандартные свойства класса ReferenceError: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError/prototype#Properties. Имя ссылочного объекта не является одним из них. – Barmar

+0

Правда, только я думаю, вы можете это сделать 'if (e.name ===" ReferenceError ") {console.log (e.message.split (" ") .shift();)}' – PSL

+0

Спасибо за предложение! Думаю, мне придется сделать это. – Huston

ответ

1

Хороший вопрос, насколько я знаю (и если вы проверяете консоль), в объекте ReferenceError нет свойства/метода, ссылающегося на пропущенное имя.

Вы можете разобрать сообщение об ошибке, чтобы извлечь имя свойства. Но это было бы трудно, поскольку сообщения об ошибках могут быть локализованы и различны в зависимости от используемого браузера. Хотя, если вы хотите использовать это для разработки, и вы управляете средой, ее следует довольно легко реализовать с помощью Regexp.

+0

Спасибо. Я тоже не видел его в консоли. Я просто надеялся, что кто-то еще узнает что-то, чего я не сделал. Мне пришло в голову, что я могу разобрать его из сообщения, но я забыл о локализации. Это делает его гораздо более серьезной проблемой, чем просто учет изменений браузера. – Huston

Смежные вопросы