当前位置:  开发笔记 > 编程语言 > 正文

为什么使用原型继承实现JavaScript?

如何解决《为什么使用原型继承实现JavaScript?》经验,为你挑选了4个好方法。

有很多文章和帖子解释了JavaScript继承是如何工作的,但为什么JavaScript使用原型继承而不是经典继承来实现?

我喜欢JavaScript,所以我不是说这是件坏事......我只是好奇.



1> dshaw..:

以下是Brendan Eich对发生的事情的评价:http: //weblogs.mozillazine.org/roadmap/archives/2008/04/popularity.html

正如我经常说的那样,正如Netscape的其他人所证实的那样,我被招募到了Netscape,承诺在浏览器中"做一个Scheme".至少客户工程管理包括Tom Paquin,Michael Toy和Rick Schell,以及一些名叫Marc Andreessen的人,他们确信Netscape应该以源代码的形式在HTML中嵌入一种编程语言.

来自高级工程管理的diktat是该语言必须"看起来像Java".排除了Perl,Python和Tcl以及Scheme.

我并不自豪,但我很高兴我选择了Scheme-ish一流的功能和Self-ish(尽管是单一的)原型作为主要成分.Java影响,特别是y2k Date错误,但原始与对象的区别(例如,字符串与字符串),是不幸的.



2> Rex M..:

除非JavaScript的设计者之一停下来权衡,否则我们只能推测.话虽如此,这是我的看法:

JavaScript在解释时执行,因此没有将对象类型的声明与对象本身分开的概念.这是一种非常实用的方法.该实例在描述时就已存在 - 我们总是在活动实例上运行.因此,类的概念 - 或被动的"实例模板" - 没有真正的位置.


有很多脚本语言使用类.

3> noah..:

JavaScript最初应该与Lisp非常相似.即使在将语法更改为更接近C/Java之后,它仍然是C语言中的Lisp.我认为答案在于它的功能性编程起源.在纯FP中,没有可变状态,这意味着没有可变对象.如果你稍微放松一下规则并稍微有点创意,你最终会得到像protypal inheritance这样的东西,也就是说,你可以扩展对象但不能修改原始对象.它提供与继承相同的功能,并仍然提供一些不变性.

最后,扭曲语言使其看起来像C++和Java,中提琴,你有new someFunction(),其余的是历史.


@Andre我的观点是,JavaScript的放松规则,并允许可变的状态,而是因为它有它的起源FP,原型继承使得某种意义上说,因为它可以让你同时保持原有不变扩展对象.

4> Christoph..:

因为它深受Self的影响.维基百科和ECMA规范都提到了这一点.

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有