kissarat
@kissarat
Node.js

Нужно ли реализовать множественное наследование?

В своем проекте для наследования я реализовал функцию
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
  • Вопрос задан
  • 2719 просмотров
Пригласить эксперта
Ответы на вопрос 1
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Множественное наследование ведет к множеству же проблем:)
Лучше приделайте механизм миксинов, а еще лучше -- компонентно-ориентированное программирование.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы