(2017.10.10) 我对 JavaScript 历史的认识
关于 JavaScript 的历史和来由相信学过 JavaScript 的小伙伴都能说出一二。我看过一些入门书籍第一章或者前言部分都有介绍,但是一直没捋清这段历史。今天通过两个问题,来加深我对 JavaScript 历史的认识。
1、JavaScript 的历史;
2、JavaScript 与 ECMAscript 的关系;
答: 在上世纪 90 年代,互联网浪潮来袭,使用互联网的人越来越多,网页也越来越复杂。那时表单是通过传递给服务器进行验证,如果,某必选字段没填,或者格式不对,点击提交,服务器验证后再把错误信息回传给客户端。在那个网速极低,拨号上网的时代,导致表单填写效率极低。于是网景 (Netscape)公司决定开发一种脚本语言,来解决这个问题,在客户端完成表单验证。编写 JavaScript 的人叫布兰登·艾奇。当初该语言命名为 LiveScript,据说为了蹭 Java 的热度,临时改为 JavaSciprt,并在 Netscape 自家浏览器(Netscape Navigator)实现。随后微软在自家浏览器(IE)中也加入 JavaScript 实现,称为 Jscript。JavaScript 与 Jscript 之间的不兼容渐渐发生问题。标准化成为当时业界的共识。于是欧洲计算机制造协会着手编制标准,并称为 ECMAscript。
答: ECMAscript 定义了该语言的标准(包括该语言的语法、数据类型、关键字、操作符、对象等……),JavaScript 指的是 ECMAscript 标准的实现。说到实现,一个完整 JavaScript 实现,除了 ECMAscript 之外,必不可少的还有文档对象模型(DOM)和浏览器对象模型(BOM)。DOM 指的是针对 XML 及扩展到 HTML 文档应用编程接口(API)。DOM 将文档映射成各种节点,通过 DOM 一些属性和方法来增加、替换、删除文档的每个部分。那么 DOM 标准是由 W3C 制定,在标准之前 IE 和 Netscape Navigator 已经有 DOM 实现,历史上称为(DOM 0 级)。W3C 制定的标准有 DOM 1 级,它包含 DOM 核心和 HTML-DOM。 DOM 2 级、DOM 3 级在原来的基础上增加一些扩展。BOM 指的是文档以外的 API,它包括浏览器本身,可以说 window 对象都属于 BOM。回过来说说 ECMAscript,它也有好几个版本。我们常说的是第三版,第五版。据说第四版过于激进,把语言本身改动很大,最终并没有发布。浏览器对 ECMAscript 各个版本实现也不相同。目前主流新版本浏览器(IE、safari、chrome、firefox、opera)能完整实现 ECMAscript 第五版……
而现在,网页的特效和交互大多用 JavaScript 编写。它的作用远不止设计之初的表单验证。
原创文章,版权所有,转载请注明出处!
(2017.10.10) 我对 JavaScript 历史的认识的更多相关文章
- 10个最好的 JavaScript 动画库和开发框架
虽然 CSS3 动画功能能够让我们以简单轻松的方式实现动画效果,但是浏览器兼容性问题让人头疼.不过不用担心,我们还有另外的武器——JavaScript,它同样可以帮助你实现各种各样的动画效果,而且借助 ...
- MyEclipse 2017 CI 10 发布(附下载)
挑战全年最低价!MyEclipse线上狂欢仅剩最后3天!立即抢购>> 2017 CI 10主要是一个错误修复版本,这个版本为Angular和TypeScript工具提供了重要的修复,并为I ...
- 欢迎来怼-Alpha周(2017年10月19)贡献分配规则和分配结果
.从alpha周(2017年10月19日开始的2周)开始,提高贡献分比重. 贡献分 : 团队分 = 1 : 5 教师会在核算每位同学总分时按比例乘以系数. 每位同学带入团队贡献分10分,如果团队一共7 ...
- 10个强大的Javascript表单验证插件推荐
创建一个JavaScript表单验证插件,可以说是一个繁琐的过程,涉及到初期设计.开发与测试等等环节.实际上一个优秀的程序员不仅是技术高手,也应该是善假于外物的.本文介绍了10个不错的JavaScri ...
- 2017年10月31日结束Outlook 2007与Office 365的连接
2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...
- 2017.10.10 java中的继承与多态(重载与重写的区别)
1. 类的继承 继承是面向对象编程技术的主要特征之一,也是实现软件复用的重要手段,使用继承特性子类(subclass) 可以继承父类(superclass)中private方法和属性,继承的目的是使程 ...
- 10 个优秀的JavaScript开发框架
阅读目录 TouchStone.js Meteor Knockout Enyo.js Reactive-coffee ExtJS Aurajs Cappuccino canjs Feathersjs ...
- JavaScript——历史与简介
上一篇博文距离现在已经四个月了,一直想写些什么无奈工作比较忙碌.我的恩师老王在毕业聚餐那天带着一声酒气告诉我一定要把博客坚持写下去,所以今天下决心要开始这个新的篇章. 之所以想要从头写一个关于Java ...
- iOS 10.10 10.11 10.12 安装升级CocoPods
CocoPods简介 CocoaPods是一个用Ruby写的,负责管理iOS以及OSX系统下的一个第三方类库管理工具,通过CocoaPods,我们可以集中,统一的管理第三方开源库.当然这些库徐亚Coc ...
随机推荐
- kindle3 破解字体
在万能的链接里下载kindle-fonts-4.4.N-k3.zip,update后kindle里出现linkfonts/fonts,这里就是存放字体的位置,字体格式需用.ttf. 在linkfont ...
- 【opencv学习笔记三】opencv3.4.0数据类型解释
opencv提供了多种基本数据类型,我们这里分析集中常见的类型.opencv的数据类型定义可以在D:\Program Files\opencv340\opencv\build\include\open ...
- ubuntu下caffe配置
http://blog.csdn.net/yhaolpz/article/details/71375762
- location对象介绍
Location 对象 Location 对象 Location 对象包含有关当前 URL 的信息. Location 对象是 Window 对象的一个部分,可通过 window.location 属 ...
- HDU - 5887 2016青岛网络赛 Herbs Gathering(形似01背包的搜索)
Herbs Gathering 10.76% 1000ms 32768K Collecting one's own plants for use as herbal medicines is pe ...
- C++ BYTE、WORD与DWORD类型
在VS中,BYTE与WORD,DWORD本质上都是一种无符号整型,它们在WINDEF.H中被定义,定义如下: typedef unsigned char BYTE;typedef unsi ...
- ue4 enable input
actor: enable input 这个可以使多个actor接收输入 pawn: possese pawn使用enable input是不生效的 貌似不允许多个pawn同时接收输入,可以考虑直接 ...
- Unity开发Android应用优化指南(下)
http://forum.china.unity3d.com/thread-27044-1-1.html 在Unity开发Android应用优化指南(上)一文中,从游戏性能,脚本等方面进行了分析和总结 ...
- loj #6079. 「2017 山东一轮集训 Day7」养猫【最大费用最大流】
首先假设全睡觉,然后用费用流考虑平衡要求建立网络流 把1~n的点看作是i-k+1~k这一段的和,连接(i,i+k,1,e[i]-s[i]),表示把i改成吃饭,能对i~i+k-1这一段的点产生影响:然后 ...
- 求10000以内n的阶乘(openjudge 2923)
求10000以内n的阶乘 总时间限制: 5000ms 内存限制: 655360kB 描述 求10000以内n的阶乘. 输入 只有一行输入,整数n(0<=n<=10000). 输出 一行 ...