Классика или не классика это не корректно. Class based и Prototype based имеет значение.
Я утверждаю что нет смысла в JS пытаться сделать эмуляцию «super» единственный честный способ это сделать – написать на JS интерпритатор другого языка.
Есть желание вызвать метод другого объекта, к которому нет доступа по цепочке прототипов, надо указать имя объекта, имя метода и контекст. Однажды приняв это пересташь писать дикие обертки вокруг объектов, а код становится проще и понятнее, сам через это прошел.
this.ancestor('method', 3)() // не ясно метод какого объекта вызовется.
bar.method.bind(this) // этой сроки достаточно, чтобы понять где искать дальше
Я предлагаю всетаки смириться с тем что JS prototype based и использовать эту его свойство по полной.
Важно пнимать что прототип самостоятельный объект, а это значит что если мы хотим вызвать его метод то надо всего-то явно это записать.
function Bar(){
this.method = function(){...}
}
var bar = new Bar();
function Foo(){
this.method = function(){
bar.method.bind(this); // Вызываем метод родителя в своем контексте
bar.method.bind(bar); // Вызываем метод родителя в контексте родителя
...
}
}
Foo.prototype = bar;
var foo = new Foo();
Я понимаю что принятие друго парадигмы бывает сложным, но надо сделать над собой усилие.
jsx я делал для больших, масштабируемых и как целиком, так и по частям reusable (не могу подобрать русский перевод) интерфейсов.
Система событий в jsx никоим образом не влияет на систему событий в DOM она идет паралельно и предназначена для удаления жестких ссылок между объектами и компонентами.
Собственно тут подробно описанно http://jsx.ru/Texts/CustomEvents/index.html.
Как при таком подходе работать с DOM событиями решать разработчику.
Я утверждаю что нет смысла в JS пытаться сделать эмуляцию «super» единственный честный способ это сделать – написать на JS интерпритатор другого языка.
Есть желание вызвать метод другого объекта, к которому нет доступа по цепочке прототипов, надо указать имя объекта, имя метода и контекст. Однажды приняв это пересташь писать дикие обертки вокруг объектов, а код становится проще и понятнее, сам через это прошел.
this.ancestor('method', 3)() // не ясно метод какого объекта вызовется.
bar.method.bind(this) // этой сроки достаточно, чтобы понять где искать дальше
Важно пнимать что прототип самостоятельный объект, а это значит что если мы хотим вызвать его метод то надо всего-то явно это записать.
function Bar(){
this.method = function(){...}
}
var bar = new Bar();
function Foo(){
this.method = function(){
bar.method.bind(this); // Вызываем метод родителя в своем контексте
bar.method.bind(bar); // Вызываем метод родителя в контексте родителя
...
}
}
Foo.prototype = bar;
var foo = new Foo();
Я понимаю что принятие друго парадигмы бывает сложным, но надо сделать над собой усилие.
Остался баг, вызывающий alert сегодня его пофиксим.
XSS нет уже несколько дней, т.е. злоумышленник не может послать ссылку, которая украдет куку пользователя.
Система событий в jsx никоим образом не влияет на систему событий в DOM она идет паралельно и предназначена для удаления жестких ссылок между объектами и компонентами.
Собственно тут подробно описанно http://jsx.ru/Texts/CustomEvents/index.html.
Как при таком подходе работать с DOM событиями решать разработчику.