Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.01.2012, 08:10
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Наследование функционала классов атомарных типов
Не могу понять, как создать конструктор, расширяющий класс для вещей атомарного типа. Например, я хочу сделать класс N, который ведет себя так же как и Number, но имеет дополнительные методы.
...
N.prototype.doSomething = function(){}; //при этом Number не трогать
var n = new N(5);
x = 3 + n; //8
n.doSomething();
Number.prototype.doSomething; //undefined

То же самое касается String и Boolean.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 14.01.2012, 08:49
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

FINoM,
Создаёшь iframe, берёшь о туда нужный объект и пользуешься им, меняя прототипы.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
  #3 (permalink)  
Старый 14.01.2012, 10:04
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

function N(value) {
    this.value = value;
}

N.prototype.valueOf = function() {
    return this.value;
};
var n = new N(5);
alert(3 + n);
Ответить с цитированием
  #4 (permalink)  
Старый 14.01.2012, 16:31
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Kolyaj, круто.
Как теперь скопировать методы Number в N? Можно, конечно, вручную создать методы, но вопрос интересует с чисто образовательной стороны.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #5 (permalink)  
Старый 14.01.2012, 18:02
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

N.prototype = new Number();


Только не факт, что всё будет работать, как задумано. Скользкая это дорожка
Ответить с цитированием
  #6 (permalink)  
Старый 14.01.2012, 18:15
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Kolyaj
N.prototype = new Number();
Я тоже так пробовал, не пашет. Поэтому и спрашиваю.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #7 (permalink)  
Старый 14.01.2012, 18:24
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Ничего не выйдет.
http://javascript.ru/ecma/part15#a-15.7.4
Цитата:
Если значение this не является объектом, для которого значением внутреннего свойства [[Class]] является "Number", бросается исключение TypeError.
Ответить с цитированием
  #8 (permalink)  
Старый 14.01.2012, 18:33
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Kolyaj, спасибо. Но текст сложновато написан.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #9 (permalink)  
Старый 14.01.2012, 18:39
Аватар для Nekromancer
Профессор
Отправить личное сообщение для Nekromancer Посмотреть профиль Найти все сообщения от Nekromancer
 
Регистрация: 06.05.2009
Сообщений: 1,163

FINoM,
Нормально, это спецификация.
__________________
Нужно равняться на лучших, а не оправдываться за счёт худших.
Ответить с цитированием
Ответ



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

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