А между тем победоносная самая лучшая в мире функция Class развилась и перекочевала жить в ui.js ^_^ и теперь называется extend. Вот кстати че она может:
<script src="//uijs.ru/ui.js"></script>
<script>
// создадим Родителя
var Animal = ui.extend({
constructor: function () {
this.private.name = 'Animal'; // приватное свойство name
},
say: function () {
alert(this.private.name); // 'Animal'
}
});
// создадим Ребенка и наследуем его от родителя
var Rabbit = Animal.extend(new function () {
this.constructor = function () {
this.private.name = 'Rabbit'; // приватное свойство name
this.super(); // поскольку перекрыли родительский конструктор, вызовем его
};
// перекрываем метод say
this.say = function () {
this.super(); // 'Animal'
alert(this.private.name); // 'Rabbit'
alert(this.static.prop); // 11
}
});
Rabbit.prop = 11; // зададим классу статическое свойство
var rabbit = new Rabbit();
rabbit.say(); // запускаем шарманку
</script>
Также наследовать можно от нативных классов:
<script src="//uijs.ru/ui.js"></script>
<script>
var List = ui.extend(Array, {
constructor: function () {
this.name = 'List';
},
// перекроем родительский метод
push: function (item) {
this.super(item); // вызовем оригинальный метод
alert(this.name); // ну и добавим доп функционал
}
});
var list = new List();
list.push('lol'); // 'list'
list.push('lol'); // 'list'
alert(list instanceof Array); // true
alert(list instanceof List); // true
</script>
Ну а с классами кофескрипта она вообще идеально сочитается, она вообще под них и затачивалась потому что я на нем пишу, просто передаешь класс и все и она его понимает).
P.S. и это лишь маааааалая часть моего мегафреймворка, он коненчо крутой и уже лучше ангуляра и такой же быстрый как реакт потому что использует ассинхронный рендеринг, но еще пол годика или годик нужно подождать до статьи на хабре, он сыроват, я хочу туда добавить ТАКИЕ фишки чтобы волосы на жопе дыбом стояли, вроде переводчика и языковых пакетов. и.т.п. и чтобы перевод можно было делать прям в интерфейсе зажав шифт например и тыкнув на элемент.