JavaScript简介

更新日期: 2019-11-16阅读: 2k标签: 简介

本篇文章希望可以从JavaScript的技术的背景、原理和设计出发,把知识的内容呈现出来。这种形式适用于有体系和源流的知识,比较适合系统学习和理解。

JavaScript诞生与1995年,当时的主要目的之一是处理以前由服务器端语言(如Perl)负责的一些验证操作。在JavaScript之前,必须把表单数据发送到服务器端才能确定用户是否没有填写某个必填域,Netscape Navigator希望通过JavaScript来解决这个问题。想要全面理解和掌握JavaScript,关键在于弄清楚他的本质、历史和局限性。 ————《JavaScript高级程序设计(第三版)》 

 

JavaScript简史

在Web日益流行的同时,人们对客户端脚本语言的需求也越来越强烈,当时就职于Netscape公司的Bredan Erich开始着手计划于1995年2月发布的NetscapeNavigator 2开发一种名为LiveScript的脚本语言————该语言将同时在浏览器和服务器中使用(它在服务器上的名字是liveWire),Netscape和Sun公司建立了一个开发联盟,在发布前夕,Netscape为了搭上媒体热炒的Java的顺风车,临时把LiveScript改名为JavaScript。

由于JavaScript1.0的大获成功,Netsca在Netscape Navigator 3中发布了JavaScript1.1, 微软也在其发布不就后在IE3中发布了JScript的JavaScript实现, 微软在1996年8月进入web领域标志这JavaScript作为一门语言,向前迈进了一大步。

1997年, 以JavaScript1.1为蓝本的建议被提交给了欧洲计算机制造商协会(ECMA, European Computer Manufactures Association),该协会指定TC39技术委员会(TC39, Technical Committee #39)负责“标准化一种通用、跨平台、供应商中立的脚本语言的语义和语法。 TC39经过数月的努力完成了ECMA-262的新脚本语言的标准。

第二年,ISO/IEC(International Organization for Standardization and International Electrotechnical Commission)也采用了ECMAScript作为标准(即ISO/IEC-16262),自此以后,浏览器开发商就开始致力于将ECMAScript作为各自JavaScrip实现的基础。


JavaScript的实现

虽然JavaScript和ECMAScript经常被人们表达相同的含义,单JavaScript比ECMA-262中规定的多得多,一个完整的JavaScript应该由下列三个不同的部分组成

  • 核心(ECMAScript)
  • 文档对象模型(dom
  • 浏览器对象模型(BOM)


ECMAScript

ECMA-262定义的EMCAScript与浏览器没有依赖关系,ECMA定义的制式这么语言的基础,在此基础上可以构建更完善的脚本语言。Web浏览器只是ECMAScript实现可能的宿主环境之一,宿主环境不仅提供基本的ECMAScript实现,同时也会提供该原因的扩展,以便语言与环境之间对接交互,而这些扩展,如DOM,则利用ECMAScript的核心类型和语法提供更多具体的功能,以便实现针对环境的操作,其他宿主环境包括Node, Adobe Flash。

ECMAScript就是对实现该标准规定的各个方面的语言的标书,Javascript实现了EMCAScript, Adobe ActionScript同样也实现了ECMAScript。


文档对象模型(DOM)

DOM是针对XML但经过扩展的html应用程序的编程接口。DOM把整个页面映射为一个多层节点结构,HTML页面中的每个组成部分都是某种类型的节点,这些节点又包含不同类型的数据,开发人员通过DOM可以轻松地删除、添加、替换或者修改任何节点。

DOM级别

DOM0级: IE4.0和Netscape Navigator4.0最初支持的DHTML。

DOM1级:(DOM Level1)于1998年10月成为w3c推崇标准。DOM1级由连个模块组成:DOM Core和DOM HTML。DOM Core规定的是如何映射基于XML的文档结构,DOM HTML实在DOM Core的基础上加以扩展,添加了针对HTML的对象和方法。

DOM2级:在DOM1的基础上DOM2引入了更多的交互能力,也支持了更高级的XML特性。DOM2将DOM分为更多具有联系的模块。DOM2级在原来DOM的基础上又扩充了鼠标、用户界面事件、范围、遍历等细分模块,而且通过对象接口增加了对css的支持。DOM1级中的DOM核心模块也经过扩展开始支持XML命名空间。在DOM2中引入了下列模块,在模块包含了众多新类型和新接口:

  • DOM视图(DOM Views):定义了跟踪不同文档视图的接口
  • DOM事件(DOM Events):定义了事件和事件处理的接口
  • DOM样式(DOM Style):定义了基于CSS为元素应用样式的接口
  • DOM遍历和范围(DOM Traversal and Range):定义了遍历和操作文档树的接口

DOM3级:进一步扩展了DOM,引入了以统一方式加载和保存文档的方法,它在DOM Load And Save这个模块中定义;同时新增了验证文档的方法,是在DOM Validation这个模块中定义的。


DOM3进一步扩展了DOM,在DOM3中引入了以下模块:
  • DOM加载和保存模块(DOM Load and Save):引入了以统一方式加载和保存文档的方法
  • DOM验证模块(DOM Validation):定义了验证文档的方法
  • DOM核心的扩展(DOM Style):支持XML 1.0规范,涉及XML Infoset、XPath和XML Base



浏览器对象模型(BOM)

一个网页是由html来搭建结构的,通过css来定义网页的样式,而JavaScript赋予了页面的行为,通过它我们可以与页面进行交互,实现页面的动画效果等等。那javascript究竟通过什么来实现的呢?通过ECMAScript这个标准,我们可以编写程序让浏览器来解析,利用ECMAScript,我们可以通过BOM对象(即browser object model)来操作浏览器窗口、浏览器导航对象(navigator)、屏幕分辨率(screen)、浏览器历史(history)、cookie等等。但这个通过BOM来实现的交互远远不够。要实现页面的动态交互和效果,操作html才是核心。那如何操作html呢?对,就是DOM,简单的说,DOM给我们提供了用程序来动态控制html的接口,也就是早期的DHTMl的概念。因此,DOM处在javascript赋予html具备动态交互和效果的能力的核心地位上。


链接: https://www.fly63.com/article/detial/6859

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!