Наследование статических членов в MooTools - PullRequest
0 голосов
/ 14 января 2011

Я использую систему классов MooTools, и я хотел бы иметь возможность получить доступ к любому статическому члену определенного класса, не зная всей цепочки наследования. Например, если у меня есть ChildClass, который расширяет BaseClass и

BaseClass.foo = function() { /*...*/ }

Я бы хотел позвонить ChildClass.foo().

Для этого я подумываю изменить метод MooTools Class следующим образом:

function Class(params)
    // ...
    // var newClass = ...

    var parentClass = params.Extends;
    if (parentClass) {
        newClass.__proto__ = parentClass;
    }

    // ...
}

Это создаст цепочку прототипов каждого объекта класса для указания на его родительский класс.

Если статический член более высокого класса скрыт в более производном классе, пусть будет так.

Несмотря на использование устаревшего __proto__, я на правильном пути? Кто-нибудь видит какие-либо явные проблемы?

1 Ответ

1 голос
/ 22 июня 2011

Вы всегда можете расширить Мутатор Расширения:

(function(){

    var original = Class.Mutators.Extends;

    Class.Mutators.Extends = function(parent) {
        original.call(this, parent);

        var members = {};
        for (var key in parent) {
            if (parent.hasOwnProperty(key) && !this.hasOwnProperty(key)) {
                members[key] = parent[key];
            }
        }
        this.extend(members);
    };

}());

Вы должны проверить Книга Марка Обсены .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...