摘要:问题中的面向对象原型继承等特性不同于等其他面向对象语言,初看起来非常怪异为什么中有操作符构造函数,却没有类为什么中使用原型,用原型来模拟类和继承看起来很别扭参考了讲述诞生历史的几篇文章后,我总算了解这些特性的来历,简单总结如下。
问题
JS中的面向对象、原型继承等特性不同于Java等其他面向对象语言,初看起来非常怪异:
为什么JS中有new操作符、构造函数,却没有类?
为什么JS中使用原型,用原型来模拟类和继承看起来很别扭?
参考了讲述JS诞生历史的几篇文章后,我总算了解这些特性的来历,简单总结如下。
JS诞生情况Brendan Eich(JS发明者)要在10天内完成JS的设计,任务时间紧迫。
JS的初衷只是用于表单检验、状态栏滚动消息等简单功能,设计要简单轻量傻瓜,Brendan Eich并未预料到日后JS会如此流行、重量化、复杂化。
出于网景公司的高层命令和营销考虑,JS要像Java但又不能太像,要做一个傻瓜式的、用在网页中的类Java小弟脚本语言。
除了Java,Brendan Eich出于设计考虑、个人兴趣等原因还借鉴了C、Scheme、Self等语言。
JS语言特性来历了解了JS的诞生,JS为什么是这个样子的也就一目了然了:
基本语法,如花括号、分号、关键字等 —— 借鉴C。
对象、构造函数、new操作符 —— 借鉴Java。
没有类 —— 不能太像Java,没必要复杂化。
函数是一等公民 —— 借鉴Scheme。
原型 —— 借鉴Self。
参考文章Javascript:10天设计一门语言
Javascript继承机制的设计思想 - 阮一峰的网络日志
Javascript诞生记 - 阮一峰的网络日志
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/97992.html
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
摘要:很多情况下,通常一个人类,即创建了一个具体的对象。对象就是数据,对象本身不包含方法。类是相似对象的描述,称为类的定义,是该类对象的蓝图或原型。在中,对象通过对类的实体化形成的对象。一类的对象抽取出来。注意中,对象一定是通过类的实例化来的。 showImg(https://segmentfault.com/img/bVTJ3H?w=900&h=385); 马上就要到七夕了,离年底老妈老爸...
摘要:构造函数的两个特征函数内部使用了,指向所要生成的对象实例。将一个空对象的指向构造函数的属性,这个对象就是要返回的实例对象。用面向对象开发时,把要生成的实例对象的特有属性放到构造函数内,把共有的方法放到构造函数的里面。 JS中面向对象的概念 面向对象OOP是一种组织代码结构、实现功能过程的思维方式。它将真实世界各种复杂的关系,抽象为一个个对象,然后由对象之间的分工与合作,完成对真实世界的...
摘要:小程序微信把这个小程序框架称为,并声称是在微信中开发小程序的框架。在小程序里面,对应的是和,注意虽然模式和很像,但是在形式上算是微信自己开发的一套所以你需要使用他们自己的标签。 这篇文章将围绕下面几个方面: 从开发模式(过程)上对比Android和小程序,比较两种模式的异同 从实现功能上对比,主要是看看微信小程序的局限 自己的一些看法,微信的优势 开发过程上的对比 在我看来,开发一...
阅读 1683·2021-09-28 09:43
阅读 1083·2021-09-23 11:22
阅读 2558·2021-09-14 18:05
阅读 1796·2019-08-30 15:52
阅读 2769·2019-08-30 10:55
阅读 1960·2019-08-29 16:58
阅读 1248·2019-08-29 16:37
阅读 2989·2019-08-29 16:25