攻下《JavaScript高级程序设计》——第一章 JavaScript简介

154 阅读4分钟

1.JavaScript历史

这里讲个故事吧。

时间:20世纪末。

主人公:Netscape公司(网景)和微软。

背景:20多年前,大多数网民都用着28.8kb/s的“猫”上网。如果你提交个表单,烟点着吸了两口,页面才显示你忘了填性别,Damn it! 这都是因为那时的表单验证都放在服务端,所有的表单数据都要发往服务端去确定是否有不合法数据或者为填项。所以,故事就围绕着解决表单验证的问题互而展开……

正文:当时的Netscape公司威风凛凛,是走在技术革新最前沿的公司,他们打算开发个客户端语言来解决这个痛点。1995年,Netscape公司的员工布兰登·艾奇研究出来了一个服务端和客户端都能用的语言,叫LiveScript。发布前,Netscape公司起了炒作的心思,就借着当时大明星Java的势,给自己重新起名叫JavaScript.

解决了痛点加上完美的“营销手段”,JavaScript取得了巨大的成功,这时的Netscape公司也是十分骄傲,给自己定位为市场领袖型公司(历史告诉我们,不管怎样,都不要骄傲)。这时候,Netscape的竞争公司微软感受到了压力,立马在其IE3中加入了名为JS的JavaScript实现,这么一来,市面上就有两个版本的JavaScript了,没有规矩不成方圆,这没有标准怎么行,所以欧洲计算机制造商协会接下了这个标准化问题(欧洲计算机制造商协会缩写为ECMA,熟悉吧~)。至此,ECMAScript标准就诞生了。 JavaScript诞生的故事到这里就讲完了,但JavaScript依旧在茁壮成长。

2.JavaScript实现

上面最后提到了ECMAScript,但是它并不是真正的JavaScript,而是JavaScript实现的基础。完整的JavaScript由ECMAScript、DOM、BOM组成,如下图:

2.1 ECMAScript

这就是我们常说的ES了,它只是JavaScript的核心,并不是JavaScript,ECMAScript也并不是只存在于web浏览器,它还有其他宿主,比如大家熟知的node,Adobe flash也是它的宿主之一。ECMAScript的版本和兼容性历史在这里就不讲了,它的版本一直在更新迭代,最值得研究的是最近几版,这里到时候再系统看es6了时候再统一整理。

2.1 DOM

文档对象模型,它是针对XML但是扩展用于HTML的应用程序编程接口,没错它是个API。DOM把整个HTML映射成一个多层节点的树结构,如下图(图片来自w3school),由此可见,DOM让我们开发者掌控了页面,使我们对任何节点可以进行删除、修改、添加等操作。

这个DOM节点翻译为:

<html>
    <head>
        <title>文档标题</title>
    </head>
    <body>
        <a href="XXX">我的链接<a/>
        <h1>我的标题</h1>
    </body>
</html>

问题来了,那DOM是怎么产生的呢? 这个又得从Netscape和微软说起了,之前他们两家拥有着不同版本的JavaScript,但其实,他们的浏览器也分别支持着不同形式的DHTML,这就使得一套HTML不能在任何浏览器中运行,为了终止web开发领域的这种技术两强割据的局面,负责制定web通信标准的万维网联盟(即W3C)开始着手规划DOM。 关于浏览器对DOM的支持,即DOM的兼容性,这是个很重要的版块,后面单独抽出来讲。

2.1 BOM

浏览器对象模型。BOM和其他两块不一样,它同样作为JavaScript实现的一部分,虽然现BOM被纳入了HTML5标准,但BOM本身却没有相关的标准,你会发现每个浏览器还是会有些自己的实现标准。 还有一点就是,根本上讲,BOM只处理浏览器窗口和框架,但是我们习惯性地把针对浏览器的JavaScript扩展也作为BOM的一部分,比如:弹出新浏览器窗口,移动缩放关闭浏览器窗口等等。

第一章,完。加油写第二章!