Dmitry A. Soshnikov,
Спасибо за разъяснения. Получается, что простая реализация наследования реализуется с избыточным кодом:
var __inheritance = function () {};
__inheritance.prototype = A.prototype;
B.prototype = new __inheritance();
B.prototype.constructor = B;
B.superclass = A;
Который рациональнее прятать в отдельную функцию. Получается, что это скорее "стандартный прием", чем простое упрощение.
Сообщение от Dmitry A. Soshnikov
|
что такое "Практически все фреймворки стремятся к динамической классовой модели", если уже изначально практически отличий нет.
|
Да это так, единственное отличие в том, что python получает ссылку на родительский класс "наглядно", а в JavaScript - конструкцией из 4х строк минимум.
Фреймворки и убирают этот момент, делая динамические классы:
var myClass = new Class({
"extend": myParentClass,
"constructor": function() { /* "конструктор" */ },
"property": "value"
});
Я и хотел узнать, насколько такой подход необходим и насколько считается "плохим тоном", говоря о JavaScript. Получается, что такой вариант помогает убрать избыточность, которую порождает обычный подход конструктор-прототип. Хоть я и разобрался в наследовании на прототипах, но думал, что что-то упустил. Потому что не понимал, зачем во фреймворках используется "эмуляция классического ООП", а именно - вид динамического ООП на классах.