“要想全面理解和掌握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的标准化被提上日程。正则表达式
1997年,以JavaScript1.1的蓝本被提交给欧洲计算机制造商协会(ECMA,Europen Computer Manufactures Association)该协会指定39号技术委员会指定相关标准“标准化一种通用,跨平台,供应商中立的脚本语言的语法和语义”。TC39由来自Netscape,Sun,Microsoft,Borland及其余关注脚本语言发展的公司程序员组成,他们通过数月的努力完成了ECMA262-定义一种名为ECMAScript的新脚本语言的标准。第二年,ISO/IEC也采用了ECMAScript做为标准,浏览器开始实现以ECMAScript为基础的JavaScript。编程
ECMAScript和Web浏览器没有依赖关系,ECMAScript也能够在其余宿主环境中实现,包括Node,Adobe Flash。咱们常见的Web浏览器只是主要的宿主环境,宿主环境不只仅提供ECMAScript的实现,还包括一些扩展接口,以便环境和语言实现对接交互。浏览器
ECMA只是主要规定了:服务器
ECMAScript就是对实现标准规定的各个方面内容的语言描述。JavaScript实现了ECMAScript,AdobeScript也实现了ECMAScript。cookie
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,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。
其余DOM标准包括:除了DOM核心和DOM HTML扩展以外,另外几种语言还发布了只针对本身的DOM扩展,下面都是基于XML的,每种都添加了与其相关的新方法和新接口:
还有一些,包括Mozilla的XUL(XML User Interface Language,XML界面语言),可是只有上面几种符合W3C标准。
Web浏览器对于DOM的支持,能够查询:http://www.webbrowsercompatibility.com/dom/desktop/
Internet Explorer3和Netscape Navigator3有一个共同的特点,那就是支持访问和操做浏览器接口的浏览器对象模型(BOM Broswer Object Model).开发人员使用BOM能够控制页面以外的部分,可是它做为JavaScript重要的一部分,却没有标准。不过这个问题最终在HTML5获得解决,HTML5试图把相关的BOM归入规范。HTML5也于今天发布,不过相关的HTML5.1还在指定中。
BOM只处理窗口和框架,下面是一些扩展:
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)[桌面端]。