Heim > Fragen und Antworten > Hauptteil
javascript是面向对象的,怎么体现javascript的继承关系?使用prototype来实现。
PHP中文网2017-04-10 13:11:41
《圣经 创世纪 1.27》
神就照着自己的形像造人、乃是照着他的形像造男造女。
可见,上帝造人使用了一个模板(他自己),是按照一个既定的蓝图造出了人类,这个蓝图就是类,就是 class。
1996年7月5日多莉的诞生,改变了创造生命的过程。多莉不是被创造出来的,而是被克隆出来的,clone 就是复制的意思。
用模板生成对象,那么要实现继承,只需要把模板继承下来,如果需要扩展父类,只需要在模板上添加一些东西,最后在用这个模板生成对象。比如 Java、C++、.net、……
用 prototype 来实现继承,只需要把你继承的对象(注意不是类)复制(克隆)过来,如果需要扩展,只需要直接在对象上添加东西。
如果需要扩展多莉,为多莉增加翅膀,只需要把鸟的基因添加过来。但是我们并没有改变羊(class),而仅仅是改变了多莉(object)。
高洛峰2017-04-10 13:11:41
我觉得这张图画的很形象。
下面是我记得关于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/
阿神2017-04-10 13:11:41
今天在翻收藏夹时,看到以前收藏的一篇内容。
使用面向对象的技术创建高级 Web 应用程序 - http://msdn.microsoft.com/zh-cn/magazine/cc163419.aspx#S8
这里面提到了继承,同时,文章提到的Douglas Crockford(貌似闭包第一提出人?!)也有分享“证明了JavaScript不仅能支持传统的继承还能应用其它的代码复用模式。” 一文,地址:http://www.crockford.com/javascript/inheritance.html
阿神2017-04-10 13:11:41
请移步http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html
或者http://coolshell.cn/articles/6441.html
PHPz2017-04-10 13:11:41
问的有点问题,建议先看看prototype的原理,理解了prototype的原理自然知道js里面怎么写继承
最重要的是,不要用c++,java,php等语言中的继承来对比理解prototype.
js的基于prototype的继承完全是另一种玩法