В своем проекте для наследования я реализовал функцию
function inherit(child, parent, proto, descriptor) {
if (!descriptor)
descriptor = {};
descriptor['base'] = {
value: parent,
enumerable: false,
writable: false
};
child.prototype = Object.create(parent.prototype);
child.prototype.constructor = child;
var names = proto ? Object.getOwnPropertyNames(proto) : [];
for (var i in names) {
var name = names[i];
descriptor[name] = Object.getOwnPropertyDescriptor(proto, name);
}
Object.defineProperties(child.prototype, descriptor);
child.descriptor = descriptor;
return child;
}
Если в дочерных классах нужно обратиться геттерам-сеттерам базового, то используется child.descriptor Что вы посоветуете, если я хочу в качестве parent передавать множество классов (конструкторов)?
Или лучше прототип расширять после применения функции наследования?
Собственно для этого у меня есть тоже велосипед:
function ext(target, extension) {
if (target.prototype)
target = target.prototype;
for (var key in extension)
if (!(key in target))
Object.defineProperty(target, key, {
value: extension[key],
enumerable: false
});
}
Правда он предназначен для безопасного расширения базовых классов, типа HTMLElement