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