《JavaScript高级程序设计》一二章
第一章:JavaScript简介
1.1 JavaScript简史
Javascript1.0:1995年,Netscape公司为Netscape Navigator 2 开发了脚本语言。
Javascript1.1:Javascript1.1:1996年,Netscape Navigator 3中发布了Javascript1.1。
JScript:同年微软公司在IE3中加入名为JScript的Javascript实现。
ECMA-262:1997年ECMA指定TC39来标准化一种中立的脚本语言,他们在该年完成了ECMA-262——定义了一种名为ECMAScript的脚本语言标准。
JavaScript由DOM、EMAScript、BOM三个部分组成
1.2 ECMAScript
*ECMAScript由ECMA-262定义了其基础,规定了:语言、类型、语句、关键字、保留字、操作符、对象,可扩展该语言。Web是实现其可能的宿主环境之一。
JavaScript就遵循了ECMAScript的标准ECMAScript。
1.2.1 ECMAScript版本
时间 | ECMA | 说明 |
---|---|---|
1996 | 1.0 | 本质上与JavaScript1.1相同,做些小改动 |
1998 | 2.0 | 编辑加工的结果 |
1999 | 3.0 | 修改字符串处理,错误定义,数值输出,新增支持语句语法。标志ECMAScript成为一门真正的编程语言。 |
2007 | 4.0 | 几乎完全定义了一门新语言,包含强类型变量、数据结构、类、继承等,跨度大,在发布权最终被放弃。 |
2008 | 3.1 | 进行较少改进,能在现有的Javascript引擎上实现,该替代方案获得超过4.0的支持,使其被放弃发布。 |
2009 | 5.0 | 澄清3中的歧义,并且增添新功能,新说明 |
2011 | 5.1 | 成为ISO国际标准 |
2013 | 6.0 | ECMAScript6.0草案制订完成并发布 |
2015 | 6.0 | 发布正式版6.0 |
1.2.2 实现兼容ECMAScript
1.支持ECMA-262中描述的基本标准
2. 支持Unicode字符标准
3. 添加ECMA-262中没有描述规定的新对象和对象的新属性
4. 支持ECMA-262-中没有定义的“程序和正则表达式语法”
1.3 DOM
文档对象模型是针对XML,但经过拓展用于HTML的应用程序编程接口
使用DOM能在DHTML发展的同时保存Web跨平台的天性。
1.3.1 DOM级别
项目 | Value |
---|---|
DOM1级(1998) | 主要目标是映射文档结构。该级别由两个模型组成:DOM核心、DOM HTML |
DOM2级 | 扩充了鼠标和用户界面事件、范围、遍历等模块,通过对象借口增加对CSS的支持 |
DOM3级 | 进一步拓展了DOM,引入了统一方式加载和保存文档的方法,新增验证文档的方法,开始支持XML1.0规范。 |
1.4 BOM
BOM可用于处理浏览器窗口与框架,访问和操作浏览器窗口,但因为制定相关标准,经常出问题,HTML5后,BOM有了正式规范。
第二章: 元素一script
2.1 script元素六个属性
属性名 | 作用 |
---|---|
async (可选) | 表示立即下载脚本,但不妨碍其他页面操作,只对外部脚本有效。 |
charset(可选) | 表示通过src属性指定的代码的字符集。少用 |
defer(可选) | 表示脚本会延迟到文档完全被解析后才会执行。 |
language(已废弃) | 原来用于表示编写代码使用的脚本语言: |
src(可选) | 表示包含要执行代码的外部文件。 |
type(可选) | 表示 编写代码使用的脚本语言的内容类型(MIME类型)。text/javascript和text/ecmascript。服务器通常使用application/x-javascript和application/ecmascript |
2.2 注意
- 包含在<script>元素内部的Javascript代码从上到下依次解释。
- 不要在代码中任何地方出现</script>字符串。使用’\’将字符串分割可以避免
- src属性的<script>元素不应在<script>和</script>之间有额外的Javascript代码
- scr属性可以是外部域的文件
- 不存在defer和async属性,浏览器会按照
2.3 属性内容
- 标签位置:<script> 元素可不放在<head>元素中,放在其中会导致要等Javascript文件都被下载后页面才会呈现,有延迟,因此<script>元素一般放在<body>元素页面的后面。
- 延迟脚本:defer属性用于表面脚本在执行时不会影响页面结构,会延迟到页面解析完成。在<script>中设置defer属性告诉浏览器,只适用于外部脚本
- 异步脚本:async属性也能用于改变处理脚本的行为,也是只适用于外部脚本文件,向浏览器告知立即下载,但与defer不同,async并不保证按照指定它们的先后顺序。
2.4 script在XHTML中的用法与注意:
小于号(<)后面不能带空格,尽量使用HTML实体(<)或用Cdata来包含JavaScript代码(使用此方法在不兼容Cdata的浏览器中要注释掉Cdata标记)
2.5 外部文件来包含JavaScript文件的优点
- 可维护性:脚本文件放在同一文件夹中,且在不触及HTML标记的情况下,集中精力编辑JavaScript代码
- 可缓存性:浏览器能够根据具体的位置缓存连接的所有外部Javascript文件,一次下载多次使用,加快页面加载速度。
- 适应未来:使用外部文件无需使用HTML以及hack
2.6 noscript元素
在不支持或禁用Javascript脚本文件的浏览器中可以创造元素,来显示代替的内容,该元素出现在中任何HTML元素,除<script>外。