关于JavaScript

 

“要想全面理解和掌握JavaScript,关键在于弄清楚它的本质,历史和局限性”前端

历史

  JavaScript诞生于1995年,当时Web日益流行,由于网速太慢,为了减轻用户负担,减小请求服务端验证次数,当时走在技术革新最前端的Netscape(网景)公司,决定开发一种客户端语言,用来处理简单的验证。能够说JavaScript的诞生只是为了减轻服务器和负担,减小用户等待时间。可是今日,JavaScript的功能已不只仅限于此了。git

  当时就任于Netscape公司的布兰登·艾克(Brendan·Eric),开始为Netscape Navigator开发一种名为LiveScript的语言,后来随着Sun和Netscape的合做,为了搭上媒体热炒Java的顺风车,临时把LiveScript更名为JavaScript,JavaScript虽然和Java有类似之处,可是并非Java的子集。JavaScript的主要设计原则是基于Self和Scheme.程序员

  随着JavaScript得到成功,Netscape公司随即在Netscape Navigator 3发布了JavaScript1.1。随着Web的受关注,Microsoft向Spyglass公司买下Spyglass Mosaic的受权,发布了IE浏览器的第一本版本—Internet Explorer 1,当时Netscape和Microsoft是主要的竞争者,而且都以飞速更新浏览器版本和增长新功能,不过Netscape Navigator仍然是其中的王者,市占率超过八成。Microsoft在IE3中也加入了名为JScript的JavaScript实现(主要是为了不有关受权的问题)而且,自此Microsoft 的Internet Explorer市占率开始紧追Netscape Navigator。1997年,Internet Exploer 4发布,IE4包括了很多新功能,提升了对W3C标准的支持。Netscape和Microsoft的竞争引起的浏览器大战的第一回合。github

(1997年,部分Netscape员工前往IE4发布会现场,推到表明IE的E标志,树立了Mozilla的恐龙,并协商Netscape 72,Microsoft 18,表明当时的市占率。)浏览器大战时间表:http://upload.wikimedia.org/wikipedia/commons/7/74/Timeline_of_web_browsers.svgweb

  当时Microsof(JScript)t和Netscape(JavaScript)还有CEnvi(ScriptEase)并无统一JavaScript的标准,几种不一样版本加剧了业内的担忧,随后JavaScript的标准化被提上日程。正则表达式

JavaScipt的核心标准——ECMA-262

  1997年,以JavaScript1.1的蓝本被提交给欧洲计算机制造商协会(ECMA,Europen Computer Manufactures Association)该协会指定39号技术委员会指定相关标准“标准化一种通用,跨平台,供应商中立的脚本语言的语法和语义”。TC39由来自Netscape,Sun,Microsoft,Borland及其余关注脚本语言发展的公司程序员组成,他们通过数月的努力完成了ECMA262-定义一种名为ECMAScript的新脚本语言的标准。第二年,ISO/IEC也采用了ECMAScript做为标准,浏览器开始实现以ECMAScript为基础的JavaScript。编程

  制定ECMAScrit标准和实现是两个部分,JavaScript的实现不只仅是靠ECMAScript(核心),还有BOM(浏览器对象模型—Broswer Object Model用于改变浏览器行为)和DOM(文档对象模型—Document Object Model:用于改变文档结构和样式)。

  ECMAScript和Web浏览器没有依赖关系,ECMAScript也能够在其余宿主环境中实现,包括Node,Adobe Flash。咱们常见的Web浏览器只是主要的宿主环境,宿主环境不只仅提供ECMAScript的实现,还包括一些扩展接口,以便环境和语言实现对接交互。浏览器

ECMA只是主要规定了:服务器

  1.   语法
  2.   类型
  3.   语句
  4.   关键字
  5.   保留字
  6.   操做符
  7.   对象

ECMAScript就是对实现标准规定的各个方面内容的语言描述。JavaScript实现了ECMAScript,AdobeScript也实现了ECMAScript。cookie

  • ECMAScript的最新版本是ECMAScript5(第五版),又称ECMA-262规范的第5版。实现最广的ECMAScript3.
  • ECMA-262的第一本版本和JavaScript1.1区别不大,只是删除了针对浏览器的代码并作了一些小改动。ECMA-262要求支持Unicode标准(实现支持多语言)。使ECMA-262和平台无关,这就是二者的小区别。
  • ECMA-262的第二版进行了格式修正,使得其形式和ISO/IEC16262国际标准一致。
  • ECMA-262的第三版增长了不少新特性,增长了正则表达式支持,更好的词法做用域链处理,新的控制语句,try-catch异常处理,错误定义更加明确,数据输出的格式化及其它改变,这使得JavaScript变成了一门真正的编程语言。
  • ECMA-262的第四版对这门语言进行了一次全面的修改,增长了强类型变来那个,新语句和数据结构,真正的类和经典继承,还定义了于数据交互的新方式,可是因为对于语言的复杂性的分歧,最终提出一个名为ECMAScript3.1的修改方案,只进行了少许改进,最终ECMA-262第四版被放弃。
  • ECMAScript3.1成为了ECMA-262的第五版,而且于09年12月三日发布,新功能包括严格模式,澄清了许多第三版中的模糊概念。增长对原生JSON的支持。

新的ECMAScript

  ECMAScript6标准预期将于2015年中旬发布,ECMAScript6的代号叫ECMAScript Harmony或ES.next,预期ECMAScript6将包括多个新的概念和语言特性,Harmony的意思是“和谐”.ECMAScript6的草案已经完成了,接下来增长的主要是ECMAScript7,你们能够查阅http://www.nczonline.net/blog/2014/06/03/my-ecmascript-7-wishlist/ 《JavaScript高级程序设计》做者的ES7但愿加入的内容。

各大浏览器对于ECMAScript5的兼容,能够查阅:http://kangax.github.io/compat-table/es5/.

DOM

文档对象模型(DOM,document object model)是针对XML但通过扩展用于HTML的应用程序编程接口(application programming interface).DOM并非针对JavaScript的,不少语言也实现了DOM。不过DOM已经成为JavaScript的重要一部分。DOM源于当时的浏览器大战,Netscape要和Microsoft Internet Explorer一绝生死,又是都给浏览器赋予大量新的功能,包括VBScript,ActiveX和DHTML(Dynamic HTML,无需从新加载网页,从而改变网页外观和结构),导致很多网页不能同时在Netscape Navigator和Internet Explorer显示正常,使Web开发者不得不写两套不一样的内容。若是不对他们进行控制,就会出现两强割据的局面。负责指定Web通讯标准的W3C(World Wide Web Consortium)联盟,开始标准化DOM。

  •   DOM1(DOM Level1)于1998年10月成为W3C的推荐标准,DOM1级由两个模块组成:DOM Core 和DOM HTML。DOM核心规定是如何映射基于XML的文档结构,以便对文档中任意部分的访问和操做。DOM HTML模块则在DOM Core基础上进行了扩展,添加了HTML的对象和方法。
  •   DOM2( DOM Level2 )级在DOM1的标准上又扩充了DHTML一直支持的鼠标和用户界面时间,范围,遍历等细分模块。并且经过对象接口增长了对CSS(Cascading Style Sheet)的支持,DOM核心模块扩展开始支持XML命名空间。
  •   DOM3(DOM Level3级则进一步扩展了DOM,引入了统一方式加载和保存文档的方法——在DOM加载和保存(DOM Load and Save)模块中定义;新增验证文档的方法——在DOM验证(DOM Validation)模块中定义。DOM3也对DOM核心进行了扩展,开始支持XML1.0规范,设计XML infoset,XPath,和XML Base;
  •   DOM0标准并不存在。指的是最初支持的DHTML

 其余DOM标准包括:除了DOM核心和DOM HTML扩展以外,另外几种语言还发布了只针对本身的DOM扩展,下面都是基于XML的,每种都添加了与其相关的新方法和新接口:

  •   SVG( Scalable Vector Graphic,可缩放矢量图  ) 1.0
  •   MathML( Mathematical Markup Language ,数学标记语言)1.0
  •   SMIL(Synchronized Multimedia Integration Language, 同步多媒体集成语言)

还有一些,包括Mozilla的XUL(XML User Interface Language,XML界面语言),可是只有上面几种符合W3C标准。

Web浏览器对于DOM的支持,能够查询:http://www.webbrowsercompatibility.com/dom/desktop/

BOM

Internet Explorer3和Netscape Navigator3有一个共同的特点,那就是支持访问和操做浏览器接口的浏览器对象模型(BOM Broswer Object Model).开发人员使用BOM能够控制页面以外的部分,可是它做为JavaScript重要的一部分,却没有标准。不过这个问题最终在HTML5获得解决,HTML5试图把相关的BOM归入规范。HTML5也于今天发布,不过相关的HTML5.1还在指定中。

  BOM只处理窗口和框架,下面是一些扩展:

  •   弹出浏览器窗口的
  •   移动,缩放和关闭浏览器
  •   提供浏览器详细信息的navigator对象
  •   所加载页面和location对象
  •   提供用户显示器分辨率的screen对象
  •   对cookies的支持
  •   XMLHttpRequest和IE AcitveXObject这样的自定义对象。

BOM虽然也有一些事实标准,可是各个浏览器的实现都是不一致的。

将来

依靠跨平台,容易上手等优点,JavaScript已经成为最受欢迎的编程语言之一。随着引擎如V8和框架如Node.js的发展和事件驱动和异步IO等特性,JavaScript愈来愈被用来做为服务端开发。JavaScript的将来推荐看一个视频,名字为2050年的JavaScript。

总结

JavaScript是一种专为与网页交互而设计的脚本语言。为了减小服务端请求和减小用户等待时间,当时的浏览器霸主Netscape Navigator走在技术革新的前面。它的员工布兰登在1995年发布了JavaScript语言,后来Microsoft进入浏览器领域,也加入名为JScript的实现,为了标准化JavaScript,ECMA T39指定了语法核心标准。叫ECMAScript或ECMA-262定义。这二者和JavaScript的联系只是规范了相关的核心语法功能,JavaScript的实现还包括BOM和DOM两个重要部分,浏览器对ECMAScript第三版支持大致不错,对于第五版的标准支撑程度也愈来愈多。对于DOM,各家支持的程度都差很少,对已经正式归入HTML5标准的BOM来讲,如今各家浏览器的实现仍是因浏览器而已。如今市场上五个主要浏览器是(IE , Firefox(Netscape的继承人),Chrome , Safari , 和 Oprea)[桌面端]。

相关文章
相关标签/搜索