Наследование от встроенного 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, время: 04:02. |