0

javascript是面向对象的,怎么体现javascript的继承关系? 使用prototype来实现。

jersey 509
2013-12-03 提问
5

欢迎跟踪我在本站陆续发表的系列,会由浅入深讲到 JS 的继承等http://segmentfault.com/u/nightire/articles

n͛i͛g͛h͛t͛i͛r͛e͛ · 2013年12月03日

展开评论
9 个回答
17

已采纳

《圣经 创世纪 1.27》

神就照着自己的形像造人、乃是照着他的形像造男造女。

可见,上帝造人使用了一个模板(他自己),是按照一个既定的蓝图造出了人类,这个蓝图就是类,就是 class。

1996年7月5日多莉的诞生,改变了创造生命的过程。多莉不是被创造出来的,而是被克隆出来的,clone 就是复制的意思。

用模板生成对象,那么要实现继承,只需要把模板继承下来,如果需要扩展父类,只需要在模板上添加一些东西,最后在用这个模板生成对象。比如 Java、C++、.net、……

用 prototype 来实现继承,只需要把你继承的对象(注意不是)复制(克隆)过来,如果需要扩展,只需要直接在对象上添加东西。

如果需要扩展多莉,为多莉增加翅膀,只需要把鸟的基因添加过来。但是我们并没有改变羊(class),而仅仅是改变了多莉(object)。

6

熟读并背诵JavaScript高级程序设计第6章。。0.0

1

真理....在知乎看到两次,这是第三次.

郝翔getcha · 2015年10月05日

添加评论
3

Image
我觉得这张图画的很形象。
下面是我记得关于JavaScript原型的笔记
http://fantasydai.github.io/2016/01/06/javaScript%E5%8E%9F%E5%9E%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/

0

今天在翻收藏夹时,看到以前收藏的一篇内容。
使用面向对象的技术创建高级 Web 应用程序 - http://msdn.microsoft.com/zh-cn/magazine/cc163419.aspx#S8
这里面提到了继承,同时,文章提到的Douglas Crockford(貌似闭包第一提出人?!)也有分享“证明了JavaScript不仅能支持传统的继承还能应用其它的代码复用模式。” 一文,地址:http://www.crockford.com/javascript/inheritance.html

0

问的有点问题,建议先看看prototype的原理,理解了prototype的原理自然知道js里面怎么写继承
最重要的是,不要用c++,java,php等语言中的继承来对比理解prototype.
js的基于prototype的继承完全是另一种玩法

0

怎么体现?还是怎么 实现?实现的话,这哪里是一个评论框可以写完的,而且介绍的文章和书籍很多很多啊,网上一搜一坨一坨的啊。

0

楼主其实已经回答了自己的问题:能过prototype。 具体实现上,是通过__proto__attribute的指向。

0

其实javascript更类似于传统电路版中的时序程序

撰写答案

推广链接