Javascript.RU

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

Наследование DOM интерфейсов
Здравствуйте.
Сегодня сделал для себя открытие, что не получается унаследовать ДОМ интерфейс, EventTarget в частности.
X = function() {};
X.prototype = Object.create( EventTarget.prototype );
var x = new X;
x.addEventListener( 'y', function() {} );


Выдает ошибку:
Код:
TypeError: Illegal invocation

Что я делаю не так? Всегдя был убежден, что прототипы интерфейсов можно наследовать, оказалось, что не всё так просто...
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #2 (permalink)  
Старый 18.04.2014, 21:13
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

К сожалению, нет времени вникать, а с EventTarget никогда не работал, но возможно, проблема в том, что нужно реализовать метод .valueOf. Вот пример с наследования String для понимания, о чём я:
function MyString(value) {
    this.value = value;
}

MyString.prototype = Object.create(String.prototype);

// если не будет .toString, возникнет ошибка
MyString.prototype.toString = function () {
    return this.value;
};

var test = new MyString("test");

alert(test.split(""));
Ответить с цитированием
  #3 (permalink)  
Старый 19.04.2014, 00:30
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Ошибка же не в Object.create возникает, а уже при вызове addEventListener, поэтому и TypeError, что addEventListener внутри хочет видеть базу (this) в виде DOM-элемента.

http://www.html5rocks.com/en/tutoria...ustomelements/
https://github.com/Polymer/CustomElements
Ответить с цитированием
  #4 (permalink)  
Старый 01.05.2014, 18:08
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Sweet, не читай, отвечай.
Сообщение от Octane
Ошибка же не в Object.create возникает, а уже при вызове addEventListener
Правда что ли?
Сообщение от Octane
в виде DOM-элемента
В виде DOM объекта, скорее.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
  #5 (permalink)  
Старый 01.05.2014, 18:16
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от FINoM
Правда что ли?
ну да, я в консоли попробовал, прежде чем писать

Сообщение от FINoM
В виде DOM объекта, скорее.
да, так точнее, EventTarget не только элементы наследуют
Ответить с цитированием
  #6 (permalink)  
Старый 01.05.2014, 18:18
Аватар для FINoM
Новичок
Отправить личное сообщение для FINoM Посмотреть профиль Найти все сообщения от FINoM
 
Регистрация: 05.09.2010
Сообщений: 2,298

Сообщение от Octane
ну да, я в консоли попробовал, прежде чем писать
Это был сарказм.
__________________
"Matreshka is fucking awesome" © чувак с Reddit
Matreshka.js - Три возможности
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
инициализация плагинов до вставки html-я в DOM FanAizu jQuery 3 19.01.2014 01:16
Приглашаем в Школу Разработки Интерфейсов Яндекса B~Vladi Учебные материалы 34 05.02.2013 19:39
Новый элемент отсутствует в DOM модели StrSprut jQuery 4 19.09.2011 12:50
Ищется JS программист / разработчик интерфейсов WasD Работа 17 14.09.2011 15:22
Как в браузерах реализуются функции DOM (например createElement) iamme Общие вопросы Javascript 7 02.09.2011 20:26