lang.js中继承(inherits)方法
Closed this issue · 5 comments
xingzhewj commented
1、https://github.com/ecomfe/esui/blob/3.2/develop/src/lib/lang.js#L45
这里面的继承需要排除掉原型中的继承吗?既然是inherits,个人认为对于原型中也应该实现继承。
xingzhewj commented
esui的基类中基本所有的方法都在property里,这里继承的时候排除掉,基本都不剩下什么了。
otakustay commented
继承就是原型的继承,排除掉还剩啥……是否有个代码更明确地表达下是啥意思?
xingzhewj commented
var selfPrototype = subClass.prototype;
var proto = subClass.prototype = new Empty();
if (selfPrototype.hasOwnProperty(key)) {
proto[key] = selfPrototype[key];
}
hasOwnProperty这个的分支应该把所有的原型中的继承都排除掉了吧!子类无法继承父类原型了。
otakustay commented
这是一个继承覆盖的问题
如果父类有foo
和bar
两个方法,子类在原型上定义了foo
方法,则在这个分支中,foo
是会用子类的覆盖到原型去的,而bar
则不会
这就是标准的继承的概念,子类重写了父类的foo
,而bar
因为没重写所以直接调用父类的
xingzhewj commented
哦哦哦! 顿悟了。