我正在使用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__
,我是否在正确的轨道上?有没有人看到任何明显的问题?
答案 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。