javascript的诞生与发展(JavaScript 发展的前世今生)
专栏介绍
本专栏主要用作于开放性知识点分享学习 ,其主要知识点范围是 以围绕 原生 JavaScript 语法 从基础知识到高阶语法阶段的学习分享 。
导语:
既然博主 ,计划将此专栏打造为 JavaScript 的知识点学习分享集结地 。所以 ,本章节就为大家带来 ,有关JavaScript 这门语言的一些基本介绍 ,以及一些发展诞生的历史背景。以便大家能够更加的了解 JavaScript 这门语言 ,然后去学习它 。
JavaScript 诞生启蒙
1995年 ,JavaScript问世 。当时 ,它的主要用途是代替Perl等服务器端语言处理输入验证 。在此之前 ,要验证某个必填字段是否已填写,或者某个输入的值是否有效 ,需要与服务器的一次往返通信 。网景公司希望通过在其Navigator浏览器中加入JavaScript来改变这个局面 。在那个普遍通过电话拨号上网的年代 ,由客户端处理某些基本的验证是让人兴奋的新功能 。缓慢的网速让页面每次刷新都考验着人们的耐心 。
从那时起,JavaScript逐渐成为市面上所有主流浏览器的标配 。如今 ,JavaScript的应用也不再局限于数据验证 ,而是渗透到浏览器窗口及其内容的方方面面 。JavaScript已被公认为主流的编程语言,能够实现复杂的计算与交互 ,包括闭包 、匿名(lambda)函数 ,甚至元编程等特性。不仅是桌面浏览器 ,手机浏览器和屏幕阅读器也支持JavaScript ,其重要性可见一斑 。就连拥有自家客户端脚本语言VBScript的微软公司 ,也在其Internet Explorer(以下简称IE)浏览器最初的版本中包含了自己的JavaScript实现 。
从简单的输入验证脚本到强大的编程语言 ,JavaScript的崛起没有任何人预测到。它很简单 ,学会用只要几分钟;它又很复杂 ,掌握它要很多年 。要真正学好用好JavaScript ,理解其本质 、历史及局限性是非常重要的 。
JavaScript 的发展历史背景。
随着Web日益流行,对客户端脚本语言的需求也越来越强烈 。当时 ,大多数用户使用28.8kbit/s的调制解调器上网 ,但网页变得越来越大 、越来越复杂 。为验证简单的表单而需要大量与服务器的往返通信成为用户的痛点 。想象一下,你填写完表单 ,单击“提交 ”按钮 ,等30秒处理,然后看到一条消息 ,告诉你有一个必填字段没填 。网景在当时是引领技术革新的公司 ,它将开发一个客户端脚本语言来处理这种简单的数据验证提上了日程 。
1995年 ,网景公司一位名叫Brendan Eich(布兰登·艾奇)的工程师 ,开始为即将发布的Netscape Navigator 2开发一个叫Mocha(后来改名为LiveScript)的脚本语言 。当时的计划是在客户端和服务器端都使用它 ,它在服务器端叫LiveWire 。
Brendan Eich(布兰登·艾奇)
为了赶上发布时间 ,网景与Sun公司结为开发联盟 ,共同完成LiveScript的开发 。就在Netscape Navigator 2正式发布前 ,网景把LiveScript改名为JavaScript ,以便搭上媒体当时热烈炒作Java的顺风车(这里确实属实是蹭了当前正火的语言 Java 的热度,这也使得更多的人认识了 ,并接触了这门语言 ,这也为之后,JavaScript 的成功并被广泛应用 ,起到了一定的作用 ,甚至有的初学小伙伴,会好奇 ,JavaScript 和Java 它们之间有什么区别?所以 ,博主这里想说的是 ,它们 的关系就如同:‘周杰’ 和周杰伦的关系......) 。
由于JavaScript 1.0很成功 ,网景又在Netscape Navigator 3中发布了1.1版本。尚未成熟的Web的受欢迎程度创造了历史新高 ,而网景则稳居市场领导者的位置 。这时候 ,微软决定向IE投入更多资源 。就在Netscape Navigator 3发布后不久 ,微软发布了IE3 ,其中包含自己名为JScript(叫这个名字是为了避免与网景发生许可纠纷)的JavaScript实现。1996年8月 ,微软重磅进入Web浏览器领域,这是网景永远的痛 ,但它代表JavaScript作为一门语言向前迈进了一大步 。
微软的JavaScript实现意味着出现了两个版本的JavaScript:Netscape Navigator中的JavaScript ,以及IE中的JScript 。与C语言以及很多其他编程语言不同,JavaScript还没有规范其语法或特性的标准 ,两个版本并存让这个问题更加突出了。随着业界担忧日甚 ,JavaScript终于踏上了标准化的征程 。
1997年,JavaScript 1.1作为提案被提交给欧洲计算机制造商协会(Ecma) 。第39技术委员会(TC39)承担了“标准化一门通用 、跨平台 、厂商中立的脚本语言的语法和语义 ”的任务(参见TC39-ECMAScript) 。TC39委员会由来自网景 、Sun 、微软 、Borland 、Nombas和其他对这门脚本语言有兴趣的公司的工程师组成 。他们花了数月时间打造出ECMA-262 ,也就是ECMAScript(发音为“ek-ma-script”)这个新的脚本语言标准 。
1998年 ,国际标准化组织(ISO)和国际电工委员会(IEC)也将ECMAScript采纳为标准(ISO/IEC-16262) 。自此以后 ,各家浏览器均以ECMAScript作为自己JavaScript实现的依据 ,虽然具体实现各有不同 。
JavaScript 的核心构成
虽然JavaScript和ECMAScript基本上是同义词 ,但JavaScript远远不限于ECMA-262所定义的那样 。没错 ,完整的JavaScript实现包含以下几个部分:
核心(ECMAScript) 文档对象模型(DOM) 浏览器对象模型(BOM)ECMAScript 规范
ECMAScript ,即ECMA-262定义的语言 ,并不局限于Web浏览器 。事实上 ,这门语言没有输入和输出之类的方法。ECMA-262将这门语言作为一个基准来定义,以便在它之上再构建更稳健的脚本语言 。Web浏览器只是ECMAScript实现可能存在的一种宿主环境(host environment) 。宿主环境提供ECMAScript的基准实现和与环境自身交互必需的扩展。扩展(比如DOM)使用ECMAScript核心类型和语法 ,提供特定于环境的额外功能 。其他宿主环境还有服务器端JavaScript平台Node.js和即将被淘汰的Adobe Flash, 所以 ECMAScript 它可以理解为是JavaScript的一个标准 。ECMAScript只是对实现这个规范描述的所有方面的一门语言的称呼。JavaScript 实际实现了ECMAScript 所定义的规范概念 。
DOM(文档对象模型)
文档对象模型(DOM ,Document Object Model)是一个应用编程接口(API),用于在HTML中使用扩展的XML 。DOM将整个页面抽象为一组分层节点 。HTML或XML页面的每个组成部分都是一种节点 ,包含不同的数据 。比如下面的HTML页面:
<html> <head> <title>Sample Page</title> </head> <body> <p> Hello World!</p> </body> </html>这些代码通过DOM可以表示为一组分层节点 ,图例:
DOM通过创建表示文档的树,让开发者可以随心所欲地控制网页的内容和结构 。使用DOM API ,可以轻松地删除、添加 、替换 、修改节点 。
注意:DOM并非只能通过JavaScript访问 ,而且确实被其他很多语言实现了 。不过对于浏览器来说 ,DOM就是使用ECMAScript实现的 ,如今已经成为JavaScript语言的一大组成部分 。
BOM(浏览器对象模型)
在IE3和Netscape Navigator 3提供了浏览器对象模型(BOM) API ,用于支持访问和操作浏览器的窗口 。使用BOM ,开发者可以操控浏览器显示页面之外的部分。而BOM真正独一无二的地方 ,当然也是问题最多的地方 ,就是它是唯一一个没有相关标准的JavaScript实现 。HTML5改变了这个局面 ,这个版本的HTML以正式规范的形式涵盖了尽可能多的BOM特性 。由于HTML5的出现,之前很多与BOM有关的问题都迎刃而解了。
总体来说 ,BOM主要针对浏览器窗口和子窗口(frame) ,不过人们通常会把任何特定于浏览器的扩展都归在BOM的范畴内 。比如,下面就是这样一些扩展:
弹出新浏览器窗口的能力; 移动、缩放和关闭浏览器窗口的能力; navigator对象 ,提供关于浏览器的详尽信息; location对象 ,提供浏览器加载页面的详尽信息; screen对象,提供关于用户屏幕分辨率的详尽信息; performance对象 ,提供浏览器内存占用 、导航行为和时间统计的详尽信息; 对cookie的支持; 其他自定义对象 ,如XMLHttpRequest和IE的ActiveXObject 。总结:
JavaScript是一门用来与网页交互的脚本语言 ,包含以下三个组成部分:
ECMAScript:由ECMA-262定义并提供核心功能。 文档对象模型(DOM):提供与网页内容交互的方法和接口 。 浏览器对象模型(BOM):提供与浏览器交互的方法和接口 。同时JavaScript 属于解释型语言
JavaScript是一门解释型语言 同时也是一种泛型语言 ,所谓解释型值语言是指不需要被编译为机器码在执行 ,而是直接执行 。由于少了编译这一步骤 ,所以解释型语言开发起来尤为轻松 ,但是解释型语言运行较慢也是它的劣势 。不过解释型语言中使用了JIT技术 ,使得运行速度得以改善 。
目前 JavaScript的这三个部分得到了五大Web浏览器(IE 、Firefox、Chrome 、Safari和Opera)不同程度的支持 。所有浏览器基本上对ES5(ECMAScript 5)提供了完善的支持 ,而对ES6(ECMAScript 6)和ES7(ECMAScript 7)的支持度也在不断提升 。这些浏览器对DOM的支持各不相同,但对Level 3的支持日益趋于规范 。HTML5中收录的BOM会因浏览器而异 ,不过开发者仍然可以假定存在很大一部分公共特性 。
🚵♂️ 博主座右铭:向阳而生 ,我还在路上!
——————————————————————————————
🚴博主想说:将持续性为社区输出自己的资源,同时也见证自己的进步!——————————————————————————————
🤼♂️ 如果都看到这了 ,博主希望留下你的足迹!【📂收藏!👍点赞!✍️评论!】
——————————————————————————————创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!