ecomfe/esui

lang.js中继承(inherits)方法

Closed this issue · 5 comments

1、https://github.com/ecomfe/esui/blob/3.2/develop/src/lib/lang.js#L45
这里面的继承需要排除掉原型中的继承吗?既然是inherits,个人认为对于原型中也应该实现继承。

esui的基类中基本所有的方法都在property里,这里继承的时候排除掉,基本都不剩下什么了。

继承就是原型的继承,排除掉还剩啥……是否有个代码更明确地表达下是啥意思?

var selfPrototype = subClass.prototype;
var proto = subClass.prototype = new Empty();

if (selfPrototype.hasOwnProperty(key)) {
    proto[key] = selfPrototype[key];
}

hasOwnProperty这个的分支应该把所有的原型中的继承都排除掉了吧!子类无法继承父类原型了。

这是一个继承覆盖的问题

如果父类有foobar两个方法,子类在原型上定义了foo方法,则在这个分支中,foo是会用子类的覆盖到原型去的,而bar则不会

这就是标准的继承的概念,子类重写了父类的foo,而bar因为没重写所以直接调用父类的

哦哦哦! 顿悟了。