Наследование DOM интерфейсов
Здравствуйте.
Сегодня сделал для себя открытие, что не получается унаследовать ДОМ интерфейс, EventTarget в частности. X = function() {}; X.prototype = Object.create( EventTarget.prototype ); var x = new X; x.addEventListener( 'y', function() {} ); Выдает ошибку: Код:
TypeError: Illegal invocation Что я делаю не так? Всегдя был убежден, что прототипы интерфейсов можно наследовать, оказалось, что не всё так просто... |
К сожалению, нет времени вникать, а с 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("")); |
Ошибка же не в Object.create возникает, а уже при вызове addEventListener, поэтому и TypeError, что addEventListener внутри хочет видеть базу (this) в виде DOM-элемента.
http://www.html5rocks.com/en/tutoria...ustomelements/ https://github.com/Polymer/CustomElements |
Sweet, не читай, отвечай.
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Часовой пояс GMT +3, время: 08:58. |