为什么JavaScript没有类而使用原型?——JavaScript语言特性来历

问题

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。

参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值