Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.01.2012, 16:49
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Наследование от встроенного Error
Здравствуйте!

Верно я сделал наследование от Error?

var Norkpalm_Error = function(message) {
	this.message = message;
	this.code = null;
	this.stack = (new Error()).stack;  
};

Norkpalm_Error.prototype = new Error();
Ответить с цитированием
  #2 (permalink)  
Старый 31.01.2012, 18:22
Аватар для 9xakep
сегодня в 12:34|Комментир
Отправить личное сообщение для 9xakep Посмотреть профиль Найти все сообщения от 9xakep
 
Регистрация: 12.04.2011
Сообщений: 1,180

Если не ошибаюсь, то будет так:
Error.prototype.Norkpalm_Error = Norkpalm_Error
и в результате:
error.Norkpalm_Error()
__________________
оляля, ололо
Ответить с цитированием
  #3 (permalink)  
Старый 31.01.2012, 20:16
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

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/, "");

про все браузеры не знаю, правда, здесь
Ответить с цитированием
  #4 (permalink)  
Старый 31.01.2012, 23:43
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Спасибо за ответ!

Вот так у меня получилось:

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";


Верно?

Сейчас пойду у себя в проекте проверять)
Ответить с цитированием
  #5 (permalink)  
Старый 31.01.2012, 23:57
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

Сообщение от vasa_c
Не здорово наследоваться от рабочего конструктора, лучше пустой временный создать:
почему?
Ответить с цитированием
  #6 (permalink)  
Старый 01.02.2012, 06:42
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

Сообщение от Gvozd Посмотреть сообщение
почему?
потому что конструктор может производить какие-либо инициализирующие действия для экземпляра, которые при создании прототипа излишни. здесь нам конструктор нужен только чтобы связаться с родительским прототипом.
Ответить с цитированием
  #7 (permalink)  
Старый 01.02.2012, 06:55
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

обычные люди боятся __proto__
назовите браузеры или движки которые его не поддерживают?

Очевидно что нужно "верстать" не под стандарт, а под реализации.
Ответить с цитированием
  #8 (permalink)  
Старый 01.02.2012, 11:25
Аватар для Shaci
:-/
Отправить личное сообщение для Shaci Посмотреть профиль Найти все сообщения от Shaci
 
Регистрация: 28.09.2009
Сообщений: 1,125

Сообщение от Livaanderiamarum Посмотреть сообщение
обычные люди боятся __proto__
назовите браузеры или движки которые его не поддерживают?

Очевидно что нужно "верстать" не под стандарт, а под реализации.
вроде ie, только не помню ввели ли поддержу в восьмом или нет
Ответить с цитированием
  #9 (permalink)  
Старый 01.02.2012, 11:32
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 03.04.2008
Сообщений: 6,234

Сообщение от Shaci
вроде ie, только не помню ввели ли поддержу в восьмом или нет
в нем еще нет
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Error installing sass:invalid gem format for C:/Ruby193.... JDev Библиотеки/Тулкиты/Фреймворки 0 25.11.2011 18:12
никак не могу найти ошибку. наследование AmniCat Events/DOM/Window 3 16.11.2011 22:50
$.ajax(), запрос отправлен, но обработчик выполняет error SkaN jQuery 3 30.09.2011 15:56
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 19:34
Error in parsing value for 'left'. Declaration dropped. Nagisa Firefox/Mozilla 2 21.03.2010 14:20