《JavaScript 闯关记》之简介

JavaScript 是面向 Web 的编程语言,绝大多数现代网站还用了
JavaScript,并且有的当代 Web 浏览器(电脑,手机,平板)均包含了
JavaScript 解释器。 这使 JavaScript
能够如得上史上使最普遍的编程语言。 JavaScript
也是前端开发工程师必须掌握的老三种植技术有:描述网页内容的
HTML、描述网页样式的 CSS、以及描述网页行为的 JavaScript。

JavaScript 是一门 动态的、弱类型的、面向对象的、解释型的
编程语言,非常适合面向对象和函数式的编程风格。JavaScript 的语法来自于
Java,它的一等函数(first-class function)来自于
Scheme,它的因原型(prototype-based)的继承来于
Self。但上以课程不必去了解那些(Java/Scheme/Slef)语言或熟悉那些术语。

JavaScript 起源

时间:1995年

人物:Brendan Eich(布兰登·艾奇)

背景:那个时刻,绝大多数因特网用户还是故快只是为28.8kbit/s的「猫」上网,为了好简单的表单验证,必须将表单数据发送到劳动器端才能够确定用户是否没填写某个必填域、是否输入了没用的价,每次操作需等待30秒以上才见面产生结果,这确实是于缓自杀。

事件:当时倒以技术革新最前沿的 Netscape 公司叫 Brendan Eich
开发同种植客户端语言,用来处理这种简易的征,它便是
JavaScript。JavaScript 原名 LiveScript,Netscape 为了增加上媒体热炒 Java
的顺风车,才将 LiveScript 改名为 JavaScript。(所以 Java 和 JavaScript
的涉嫌,就相当给雷锋和雷峰塔的关联。)

自此以后,JavaScript
逐渐成为市场上大规模浏览器必备的一致件特征功能。如今,JavaScript
的用途早已不再局限为简单的数额证明,而是具有了同浏览器窗口及其内容相当几乎拥有地方互动的力。今天底
JavaScript
已经化为平等门户功能全面的编程语言,能够处理千头万绪的盘算和互动,拥有了闭包、匿名(lambda,拉姆达)函数,甚至老大编程等特征。

JavaScript
从一个大概的输入验证器发展成同派别强大的編程语言,完全盖人们的预期。应该说,它既是是平等门户非常简单的言语,又是平山头非常复杂的语言。说它概括,是因学会运用她只有待片刻功;而说其复杂,是以要真控制其虽然需要反复年日。

JavaScript 实现

趁着 JavaScript 的推广,微软公司以 IE 浏览器被吗入了名也 JScript 的
JavaScript 实现,由于尚未标准规定 JavaScript
的语法和特性,导致市场上设有多个版的 JavaScript 实现,且互相免般配,因此
JavaScript 标准化问题为提上了议事日程。

1997年,欧洲计算机制造商协会(ECMA,European Computer Manufactures
Association)定义了名吧ECMAScript(发音为
ek-ma-script)的脚本语言标准,它是通用的,与平台无关的语言专业。自此以后,浏览器开发商开始从为用
ECMAScript 作为各自 JavaScript
实现的基本功。虽然基础相同,但实际实现在不同浏览器上可有点发差别。

JavaScript 和 ECMAScript 通常为众人因此来发表相同的义,但 JavaScript
的义却比较 ECMAScript 中规定的如多得差不多。一个完全的 JavaScript
实现该由下三单例外的局部组成。

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

核心(ECMAScript)

ECMAScript 标准由 语法、数据类型、语句、关键字、保留字、运算符、对象
组成。它跟 Web
浏览器没有外借助关系,并且立即宗语言本身并无包含输入和输出定义。ECMAScript
定义的单独是立即门语言的底子,而在斯基础之上可以构建更宏观之脚本语言。

Web 浏览器就是 ECMAScript 实现的宿主环境之一,其他宿主环境包括 Node 和
Adobe Flash。宿主环境不仅提供基本的 ECMAScript
实现,同时也会见提供该语言的恢宏(例如:DOM、BOM),这些扩展则以
ECMAScript 的基本类型和语法提供再多重复现实的效益。

JavaScript 是 Web 浏览器对 ECMAScript 标准的兑现,ActionScript 是
Adobe Flash 对 ECMAScript 标准的落实。

ECMAScript 历史

1997年,ECMAScript 1版发布。

1998年6月,ECMAScript 2版发布。

1999年12月,ECMAScript 3版发布。

2000年,ECMAScript 4开始琢磨,最终这个版本没有经过。

2009年12月,ECMAScript 5版发布。

2011年6月,ECMAscript 5.1本发布,成为国际标准。

2015年6月,ECMAScript 6正式通过,成为国际标准。

扩张阅读「阮一峰
的《ECMAScript 6 入门》」
http://es6.ruanyifeng.com/\#docs/intro

3.0版是一个高大的打响,在业界得到普遍支持,成为交通标准,奠定了
JavaScript
语言的中坚语法,以后的本完全继承。直到今天,初家一开始学
JavaScript,其实就是是于法3.0本子的语法。

文档对象模型(DOM)

文档对象模型(DOM,Document Object Model)是用于 HTML
的应用程序编程接口(API),它将全路页面映射为一个多交汇节点结构。HTML
页面被之每个片都是某种类型的节点,这些节点又包含在不同类型的数量。看下是
HTML 页面:

<html>
    <head>
        <title>Sample Page</title>
    </head>
    <body>
        <p>Hello World!</p>
    </body>
</html>

通过 DOM
创建的这代表文档的树形图,开发人员获得了控制页面内容以及组织的主动权。借助
DOM 提供的 API,开发人员可以轻松自如地去、添加、替换或改动外节点。

由 Netscape 和 微软实现之 DOM 互不匹配,负责制定 Web 通信专业的
W3C(World Wide Web Consortium,万维网联盟)开始动手规划 DOM。

DOM 1级:

  • DOM 核心:映射文档结构,简化对文档中肆意部分的操作及做客。
  • DOM HTML:在 DOM 核心之基本功及,添加了针对 HTML 的对象及法。

DOM 2级:

  • DOM 视图:定义了跟踪不同文档视图的接口。
  • DOM 事件:定义了事件及事件处理的接口。
  • DOM 样式:定义了依据 CSS 为要素运用样式的接口。
  • DOM 遍历和限制:定义了遍历和操作文档树的接口。

DOM 3级:

  • DOM 加载和保留:引入了以统一方式加载与保存文档的办法。
  • DOM 验证:新增了求证文档的主意。
  • DOM 核心扩展。

注意:

  1. DOM 并无是就对 JavaScript 的,很多别的语言也都实现了 DOM。
  2. DOM 0层正式是勿设有的,它只是 DOM 历史坐标中的一个参照点而已。

浏览器对象模型(BOM)

浏览器对象模型(BOM,Browser Object
Model)是用来浏览器的应用程序编程接口(API),它把任何浏览器窗口映射为一个靶。从根本上讲,BOM
只处理浏览器窗口和框架,但人们习惯及吗管所有对浏览器的 JavaScript
扩展算作 BOM 的同一有,例如:

  • 弹有新浏览器窗口的机能。
  • 活动、缩放和关闭浏览器窗口的功用。
  • 供浏览器详细信息的 navigator 对象。
  • 供浏览器所加载页面的详细信息的 localtion 对象。
  • 提供用户显示器分辨率详细信息的 screen 对象。
  • 对 cookies 的支持。
  • XMLHttpRequest 和 IE 的 ActiveXObject 这样的自定义对象。

BOM
最受人头疼的凡未曾相关的标准和标准,每个浏览器都有独有的贯彻,这个题目在
HTML5 中获了缓解,HTML5 致力为把过多 BOM 功能写入正式规范。

小结

JavaScript 是平等栽据为网页交互而计划之脚本语言,由下列3单不等的有的构成:

  • 骨干(ECMAScript),由 ECMA-262 定义,提供基本语言功能。
  • 文档对象模型(DOM),提供访问与ECMAScript操作网页内容的方法与接口。
  • 浏览器对象模型(BOM),提供以及浏览器交互的办法和接口。

JavaScript
的立即3只有,在当下5只重大浏览器(IE、FireFox、Chrome、Safari 和
Opera)中都得了不同程度之支持。其中,所有浏览器对 ECMAScript 3
版本的支撑大体上还还不错,而对 ECMAScript 5 的支撑程度更大,但针对 DOM
的支持则相距离比较多。对于曾经正式纳入 HTML5 标准的 BOM
来说,尽管各浏览器都落实了好几众所周知的联名特点,但另外特色还是会盖浏览器而异。

壮大阅读「Standard ECMA-262 5.1 Edition 」
http://www.ecma-international.org/ecma-262/5.1/

扩充阅读「ECMAScript 5 浏览器兼容一览表」
http://caniuse.mojijs.com/Home/Html/item/key/es5/index.html

更多

关爱微信公众号「劼哥舍」回复「答案」,获取关卡详解。
关注
https://github.com/stone0090/javascript-lessons,获取最新动态。