MooTools中静态成员的继承

时间:2011-01-14 18:56:17

标签: javascript inheritance mootools

我正在使用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 个答案:

答案 0 :(得分:1)

您可以随时扩展Extend Mutator:

(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);
    };

}());

您应该查看Mark Obcena's book