继承的时候我们需要调用父类的同名方法,这里面提供了一个简单的实现方式,供大家一起参考。
_gs_super 方法是扩展与最顶层父类的原型链上。
RootView.prototype._gs_super = function() {
var caller = arguments.callee.caller;
var scope = null;
var scan = this.__proto__;
var funcName;
search: while (scope == null && scan != null) {
var names = Object.getOwnPropertyNames(scan);
for (var i = 0; i < names.length; i++) {
if (scan[names[i]] === caller) {
scope = scan;
funcName=names[i];
break search;
}
}
scan = scan.constructor.__super__;
}
if (scan.constructor.__super__[funcName]) {
return scan.constructor.__super__[funcName].apply(this,arguments);
}
};