Javascript MooTools中静态成员的继承
我使用的是MooTools类系统,我希望能够访问特定类的任何静态成员,而不必知道完整的继承链。例如,如果我有一个扩展Javascript MooTools中静态成员的继承,javascript,inheritance,mootools,Javascript,Inheritance,Mootools,我使用的是MooTools类系统,我希望能够访问特定类的任何静态成员,而不必知道完整的继承链。例如,如果我有一个扩展基类的ChildClass,并且 BaseClass.foo=function(){/*…*/} 我希望能够调用ChildClass.foo() 为此,我考虑修改MooToolsClass方法如下: function Class(params) // ... // var newClass = ... var parentClass = params.Ex
基类的ChildClass
,并且
BaseClass.foo=function(){/*…*/}
我希望能够调用ChildClass.foo()
为此,我考虑修改MooToolsClass
方法如下:
function Class(params)
// ...
// var newClass = ...
var parentClass = params.Extends;
if (parentClass) {
newClass.__proto__ = parentClass;
}
// ...
}
这将设置每个类对象的原型链以指向其父类
如果来自更高类的静态成员隐藏在更派生的类中,那么就这样吧
尽管使用了弃用的\uuuuu proto\uuuuuu
,但我在这里走对了吗?有人看到任何明显的问题吗?您始终可以扩展扩展变量:
(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);
};
}());
你应该退房