Наследование от встроенного Error
Здравствуйте!
Верно я сделал наследование от Error? var Norkpalm_Error = function(message) { this.message = message; this.code = null; this.stack = (new Error()).stack; }; Norkpalm_Error.prototype = new Error(); |
Если не ошибаюсь, то будет так:
Error.prototype.Norkpalm_Error = Norkpalm_Error и в результате: error.Norkpalm_Error() |
1. Не здорово наследоваться от рабочего конструктора, лучше пустой временный создать:
Norkpalm_Error.prototype = (function () { var Fake = function () {}; // фейковый конструктор Fake.prototype = Error.prototype; return (new Fake); }()); 2. Имя желательно задать, чтобы не видеть безликий "Error": Norkpalm_Error.prototype.name = "Norkpalm_Error"; 3. Из стека вырезать первую строку, потому что она будет указывать на строку с new Error: this.stack = (new Error()).stack.replace(/^.*?\n/, ""); про все браузеры не знаю, правда, здесь |
Спасибо за ответ!
Вот так у меня получилось: var Norkpalm_Error = function(message) { this.message = message; this.code = null; this.stack = (new Error()).stack.replace(/^.*?\n/, ""); }; Norkpalm_Error.prototype = (function () { var Fake = function () {}; Fake.prototype = Error.prototype; return (new Fake); }()); Norkpalm_Error.prototype.name = "Norkpalm_Error"; Верно? Сейчас пойду у себя в проекте проверять) |
Цитата:
|
Цитата:
|
обычные люди боятся __proto__
назовите браузеры или движки которые его не поддерживают? Очевидно что нужно "верстать" не под стандарт, а под реализации. |
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 03:45. |