锁定老帖子 主题:深入剖析Javascript之继承
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-08-03
第三种能算是继承么?
方法的prototype指向的是另一个方法的实例,这可是实例呀,就算子方法new再多,父方法也只有一个实例。 |
|
返回顶楼 | |
发表时间:2007-08-03
第三种可以算继承,因为虽然不是类的继承,但是可以算是原型继承,也就是继承了作为原型的对象实例上的所有属性。而前两种只是复制或共享原型实例,最多只能说m1继承了m2的原型(或其副本),但是没有继承m2。
|
|
返回顶楼 | |
发表时间:2007-08-03
hax 写道 第三种可以算继承,因为虽然不是类的继承,但是可以算是原型继承,也就是继承了作为原型的对象实例上的所有属性。而前两种只是复制或共享原型实例,最多只能说m1继承了m2的原型(或其副本),但是没有继承m2。
前两种不算继承倒是比较明显。 第三种,“继承了作为原型的对象实例上的所有属性”,在继承《方法》属性上还算可以理解,继承《Property》属性上实在不能让人接受。 |
|
返回顶楼 | |
发表时间:2007-08-04
js本质上只有属性。如果属性是一个函数,则像x.f()这样的调用,在f内的this会指向x,从而变成所谓方法。
因此本质上不存在继承方法,只有继承属性。这个有什么不能接受呢?所谓继承,就是获得其被继承者的所有特性,不是吗。就算是java,子类一样继承了父类的所有特性,不仅包括方法,也包括成员变量,不仅包括public,也包括protectd, private的(不过就是不再能直接访问private而已)。 |
|
返回顶楼 | |