JavaScript是一门最易让人误解的语言,该语言中精华与糟粕并存(可能比一般语言的这个比例要大一些);但“千淘万漉虽辛苦,吹尽黄沙始到金”,层层面纱下是易用灵活、优雅轻灵的内在。很久以前,JavaScript被当做是玩具语言,直到AJAX的出现,直到V8引擎的易用;这种局面已经改变。
JavaScript诞生于1995年(那时我还很小);一个叫Brendan Eich的人设计了这种语言。他就职于Netscape公司,他说服了老总要开发这种语言。然而仅用了10天,10天。这门语言最初是用于解决服务器端语言(Perl等)要处理的表单验证操作。为什么呢?在通过“猫”(modem)拨号上网的年代,网速只有28.8kbit/s啊。你填一个表格之类的若填错了或填写的没填,你提交数据就只有等着吧,等了半天啥也干不了;可能最悲催的是你可能受到一个通知,你填的不对啊(心里一万匹草泥马奔过)。这里可见在客户端能验证一下多有用了吧。
JavaScript与Java的关系如同“雷锋”与“雷峰塔”。要说有关系,那就是炒作关系。当年Netscape与Sun(Sun与Java关系那叫一个紧密)何种开发了JavaScript,当时Java正炒得热,那就将其命名为JavaScript吧。JavaScript从诞生就迅速被接受,没有经过实验室的严格测试,加之完成的时间短,语言本身问题很多。1996年,NN4 中推出了JS1.1版本,而IE3虽有VBScript,但支持了JScript(但是逆向的JS1.0)。因为没有事实的标准,这二者之间很多地方并不一致。1997年,一个基于JS1.1的方案提交给了ECMA,ECMA让TC#39负责实现一种供应商中立、通用、跨平台的脚本语言的语法、语义。TC#39给了ECMA-262标准(针对ECMAScript)。1998,ISO/IEC接受了这个标准。
ECMAScript未定义语言的I/O,故可以以它为核心扩展。JavaScript只是其中一种,还用Adobe ActionScript等等,服务器端还有Node。JavaScript包括:ECMAScript、DOM、BOM。
那ECMAScript定义了哪些内容呢?语法、语句、类型、关键字、保留字、对象、操作符。ECMAScript对其兼容性做了定义:1、要支持Unicode(支持多语言开发)2、支持定义的类型、值、对象、属性、函数、句法的等 3、可以扩展未定义的类型、值、对象、属性、函数、句法等 4、支持对未定义的正则表达式、程序的支持。还是比较开放的。就对其支持而言,JS1.1及JS1.2都不完全支持ECMAScript 1;JS1.3是第一个完全支持的。IE3申称支持,但实际上也并非如此吧!JS1.4也仅仅支持服务器端,NN的继承者Firefox开始于版本号JS1.5。通常,以对ECMAScript及DOM的支持来衡量浏览器的兼容性,因为命名规则混乱。
ECMASript已有6版了,第一版在JS1.1基础上支持Unicode,支持与平台无关的对象。第二版为与ISO/IEC一致仅仅做了一些编辑工作。第三版新增:对字符串的处理、正则表达式、新的控制语句、try-catch语句、错误类型、数值输出。第四版由于与第三版差距太大而放弃;以以下面一个3.1方案代替(ECMAScript 5).第五版支持原生JSON对象、“继承”以及高级属性;包含一个严格模式(对引擎解释执行代码进行补充)。
DOM(文档对象模型,发布于1998年):针对于XML并扩展到HTML通用的、跨平台的API。它将文档结构映射为多层次的结构。DOM的出现时为了应对IE以及当年NN的一家独大。它们搞了DHTML的概念,但是实现起来却各不相同。这样要想跨平台就要编写多个文档了。但实际上DOM也并不清晰。目前DOM分为三级,DOM0级指的是历史概念表示当时对DHTML的各自支持。
1.DOM level1:含Core(实现XML文档映射)、HTML(基于Core的扩展,添加了对象、方法)。
2.DOM level2:Core扩展对命名空间支持,添加Views、Events、Style、Range and Traversal模块。
3.DOM level3:Core支持XML1.0(支持XML infoset、XML Xpath、XML Base),加入了Load and Save、Validation模块。
其他语言还支持SVG、MathXML、SMIL。IE5开始着手支持DOM,但是IE5.5才完全支持;IE6、7在吃老本;IE8修复了bug,IE8第一个着手支持ECMASript5,IE9已经完全支持了(微软还是有进步)。
BOM(浏览器对象模型)
BOM只是支持对框架、窗口的操作;但把其他一些针对浏览器的操作也算在里面了,比如:
1、弹出新窗口;2、移动、关闭、缩放窗口;3、对cookie的支持;4、支持navigator对象;5、支持screen对象;6、支持location;7、自定义的XMLHttpRequest和ActiveXObject。
最初的BOM与浏览器紧密关联,不同的浏览器有不同的实现。HTML5才对其做出了规范。(完)