JavaScript高级程序设计(第三版)第一章读书笔记

JavaScript简史

JavaScript诞生于1995年,在没有JavaScript的时候,所有输入验证操作都必须由服务器端进行验证,在那个年代,人们还普遍使用电话拨号上网,导致了与服务器的每一次数据交换都成为了对人们耐心的考验。

发展时间线

  • 1995-02:Netscape开发JavaScript 1.0完毕
  • 1996-08:微软开发JScript,与Netscape相竞争
  • 1997:ECMA(欧洲计算机制造商协会)指定TC39技术委员会进行JavaScript和JScript的标准化进程,数月之后,ECMAScript出现了
  • 1998:ISO/IEC也将ECMAScript作为标准,从此,浏览器开发商就以ECMAScript作为各自JavaScript实现的基础

JavaScript实现

JavaScript的内容比ECMAScript多得多。一个完整的JavaScript实现包含三个部分:

  • 核心(ECMAScript),也可以说成是基础,根基
  • 文档对象模型(DOM)
  • 浏览器对象模型(BOM)

1 ECMAScript

ECMAScript是一个标准,它规定了脚本语言的基础,如基本数据类型,语法规范,操作符等,应注意的是它与web浏览器并没有依赖关系;而JavaScript是ECMAScript的一种实现,依赖于浏览器环境,并根据浏览器的特性扩展了ECMAScript如DOM,便于语言与环境之间的交互。其它ECMAScript的宿主环境如Node和Adobe Flash。

1.1 ECMAPScript规定了什么内容?

  • 语法
  • 类型
  • 语句
  • 关键字
  • 保留字
  • 操作符
  • 对象

这里可以这样理解:ECMAScript是实现该标准规定的各个方面内容的语言的描述,如“应该有什么数据类型”,“应该怎么定义对象”,“循环、判断语句怎么写”类似的问题,但ECMAScript不作具体实现。

我认为这与SFS和GeoJSON、shp之间的关系十分类似,前者制定标准,后者进行实现(GIS专业知识,看不懂请忽略)

1.2 如何实现ECMAScript?

简单来说,想要成为ECMAScript所认可的实现,则这个实现必须具备:

  • 支持ECMAScript所描述的所有“类型、值、对象、属性、函数以及程序句法和语义”
  • 支持Unicode字符标准

实现可以进行扩展:

  • 添加其他“类型、值、对象、属性、函数”
  • 可以扩展定义ECMAScript没有定义的“程序和正则表达式”

因此,这为基于ECMAScript开发新语言的程序员提供了莫大的便利。

2 文档对象模型(DOM)

文档对象模型(DOM,Document Object Model)是针对XML但经过扩展用于HTML的应用程序编程接口。

DOM把整个页面映射为一个多层节点结构。使得开发人员能够方便的控制页面的内容和结构,轻松自如地删除、添加、替换和修改任何节点。

2.1 为什么要使用DOM?

DOM亦是一个标准,目的是解决由于DHTML的出现造成的问题–由于Netscape和微软在开发DHTML方面各持己见,只编写一个HTML页面就能够在任何浏览器中运行的时代结束了。W3C联盟为了继续保持web跨平台的特性,着手制定了DOM标准。

2.2 DOM级别

DOM1级

  • DOM核心:规定如何映射基于XML的文档结构,简化对文档中任意部分的访问和操作
  • DOM HTML:在DOM核心的基础上加以扩展,添加针对HTML的对象和方法

DOM2级

  • DOM视图:定义了跟踪不同文档视图的接口
  • DOM事件:定义了事件和事件处理的接口
  • DOM样式:定义了基于CSS为元素应用样式的接口
  • DOM遍历和范围:定义了遍历和操作文档树的接口

DOM3级

  • DOM加载和保存
  • DOM验证
  • 对DOM核心加以扩展,支持XML1.0规范

2.3 其它DOM标准

  • SVG:可伸缩矢量图

  • MathML:数学标记语言

  • SMIL:同步多媒体集成语言

    这三个标准也是W3C的推荐标准,各自添加了与自己相关的新方法和新接口。

应注意的是,DOM并不只是针对JavaScript的,很多别的语言也实现了DOM,不过,在web浏览器中,基于ECMAScript实现的DOM的确已经称为JavaScript这门语言的一个重要组成部分。实际上,对于XML,HTML,SVG,MathML,SMIL,JavaScript均已实现了它们所规定的DOM接口,可以轻松访问。

具体到JavaScript,即是JavaScript实现了DOM标准,将页面文档映射为了一个对象。

3 浏览器对象模型(BOM)

BOM可以访问和操作浏览器窗口,开发人员使用BOM可以控制浏览器显示页面以外的部分。

人们习惯上把针对浏览器的JavaScript扩展算作BOM的一部分,主要包括:

  • 弹出新浏览器窗口
  • 移动、缩放、关闭浏览器窗口
  • 提供浏览器详细信息的navigator对象
  • 提供浏览器所加载页面的详细信息的location对象
  • 提供用户显示器分辨率详细信息的screen对象
  • 对cookies的支持

小结

JavaScript是一种专为与网页交互而设计的脚本语言,由以下三部分组成:

  • ECMAScript,提供核心语言功能
  • 文档对象模型(DOM),提供访问和操作网页内容的方法和接口
  • 浏览器对象模型(BOM),提供与浏览器交互的方法和接口

我们需要明确的是,ECMAScript、DOM和BOM都是一种标准,在其中定义了实现这种标准的语言应具备的方法和接口,JavaScript只是实现了这三种标准的语言之一,但由于JavaScript依赖于浏览器,不同的浏览器对于这三个标准的支持不尽相同,早期的前端开发者甚至需要开发好几套页面,尤其是一直遭人诟病的IE浏览器,对标准的支持性较为落后,兼容问题令人头疼。

实际上,当我们提及IE对JavaScript的支持不高时,我们其实是在说IE的JScript对ECMAScript和DOM的支持不高。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第一部分 深入理解DOM脚本编程  第1章 遵循最佳实践    1.1 不唐突和渐进增强    1.2 让JavaScript运行起来     1.2.1 把行为从结构中分离出来     1.2.2 不要版本检测     1.2.3 通过平稳退化保证可访问性     1.2.4 为重用命名空间而进行规划     1.2.5 通过可重用的对象把事情简化     1.2.6 一定要自己动手写代码    1.3 JavaScript语法中常见的陷阱     1.3.1 区分大小写     1.3.2 单引号与双引号      1.3.3 换行     1.3.4 可选的分号和花括号     1.3.5 重载(并非真正的重载)     1.3.6 匿名函数     1.3.7 作用域解析和闭包     1.3.8 迭代对象     1.3.9 函数的调用和引用(不带括号)    1.4 实例:WYSIWYGJavaScript翻转图    1.5 小结   第2章 创建可重用的对象    2.1 对象中包含什么     2.1.1 继承     2.1.2 理解对象成员     2.1.3 window对象中的一切     2.1.4 理解作用域和闭包是根本    2.2 创建你自己的对象     2.2.1 一变多:创建构造函数     2.2.2 添加静态方法     2.2.3 向原型中添加公有方法     2.2.4 公有、私有、特权和静态成员真那么重要吗     2.2.5 对象字面量    2.3 this是什么    2.4 try{}、catch{}和异常处理    2.5 实例:你自己的调试日志     2.5.1 为什么需要JavaScript日志对象     2.5.2 myLogger()对象    2.6 小结   第3章 DOM2核心和DOM2 HTML    3.1 DOM不是JavaScript,它是文档    3.2 DOM的级别     3.2.1 DOM 0 级     3.2.2 DOM 1 级     3.2.3 DOM 2 级     3.2.4 DOM 3 级     3.2.5 哪个级别适合你    3.3 创建示例文档     3.3.1 创建DOM文件     3.3.2 选择一个浏览器   3.4 DOM核心     3.4.1 继承在DOM中的重要性     3.4.2 核心Node对象     3.4.3 核心Element对象     3.4.4 核心Document对象     3.4.5 遍历和迭代DOM树    3.5 DOM HTML     3.5.1 DOM2 HTML 的HTMLDocument对象     3.5.2 DOM2 HTML 的HTMLElement对象    3.6 实例:将手工HTML代码转换为DOM代码     3.6.1 DOM生成工具的HTML文件     3.6.2 使用示例HTML片段进行测试     3.6.3 扩充ADS库     3.6.4 generateDOM对象的框架    3.7 小结   第4章 响应用户操作和事件    4.1 DOM2级事件    4.2 事件的类型     4.2.1 对象事件     4.2.2 鼠标移动事件     4.2.3 鼠标单击事件     4.2.4 键盘事件     4.2.5 表单相关的事件     4.2.6 针对W3C DOM的事件     4.2.7 自定义事件    4.3 控制事件流和注册事件侦听器     4.3.1 事件流     4.3.2 注册事件     4.3.3 在事件侦听器中访问事件对象     4.3.4 跨浏览器的事件属性和方法    4.4 小结   第5章 动态修改样式和层叠样式表    5.1 W3CDOM2样式规范     5.1.1 CSSStyleSheet对象     5.1.2 CSSStyleRule对象     5.1.3 CSSStyleDeclaration对象     5.1.4 支持的匮乏    5.2 当DOM 脚本遇到样式    5.3 把样式置于DOM脚本之外     5.3.1 style属性     5.3.2 基于className切换样式     5.3.3 切换样式表     5.3.4 修改CSS规则    5.4 访问计算样式    5.5 Microsoft的filter属性    5.6 实例:简单的渐变效果    5.7 小结   第6章 案例研究:图像裁剪和缩放工具    6.1 测试文件    6.2 imageEditor对象     6.2.1 调用imageEditor工具     6.2.2 imageEditor载入事件     6.2.3 创建编辑器标记和对象     6.2.4 向imageEditor对象添加事件侦听器     6.2.5 缩放图像     6.2.6 裁剪图像     6.2.7 未完成的图像编辑器    6.3 小结  第二部分 浏览器外部通信  第7章 向应用程序中加入Ajax    7.1 组合的技术     7.1.1 语义化XHTML和DOM     7.1.2 JavaScript和XMLHttpRequest对象     7.1.3 XML     7.1.4 一个可重用的对象     7.1.5 Ajax是正确的选择吗    7.2 为什么Ajax会破坏网站及如何解决     7.2.1 依赖JavaScript生成内容     7.2.2 通过script标签绕过跨站点限制     7.2.3 后退按钮和书签功能     7.2.4 完成请求的赛跑     7.2.5 增加资源占用     7.2.6 问题解决了吗    7.3 实例:Ajax增强的相册    7.4 小结   第8章 案例研究:实现带进度条的异步文件上传功能    8.1 信息载入时的小生命    8.2 起点    8.3 完成整合:上传进度指示器     8.3.1 addProgressBar()对象的结构     8.3.2 载入事件     8.3.3 addProgressBar()对象    8.4 小结  第三部分 部分高级脚本编程资源  第9章 通过库来提高生产力    9.1 选择合适的库    9.2 增强DOM操作能力     9.2.1 连缀语法     9.2.2 通过回调函数进行过滤     9.2.3 操纵DOM文档    9.3 处理事件     9.3.1 注册事件     9.3.2 自定义事件    9.4 访问和操纵样式    9.5 通信    9.6 小结   第10章 添加效果增强用户体验    10.1 自己动手实现效果     10.1.1 让我看到内容     10.1.2 提供反馈    10.2 几个视觉效果库简介    10.3 视觉盛宴     10.3.1 MOO式的CSS属性修改     10.3.2 通过Script.aculo.us实现视觉效果     10.3.3 通过Moo.fx实现逼真的运动效果     10.3.4 圆角效果     10.3.5 其他库    10.4 行为增强    10.5 小结   第11章 丰富的Mashup!运用API添加地图、搜索及更多功能    11.1 API密钥    11.2 客户端API:离不开JavaScript     11.2.1 地图中的Mashup应用     11.2.2 Ajax搜索请求     11.2.3 地图与搜索的Mashup应用    11.3 服务器端API:需要代理脚本     11.3.1 通过Basecamp构建集成的To-Do列表     11.3.2 通过Flickr取得个性头像    11.4 小结   第12章 案例研究:用DOM设计选择列表    12.1 经典的感觉    12.2 构建更好的选择列表    12.3 策略?我们不需要臭哄哄的策略     12.3.1 相关的文件     12.3.2 FauxSelect对象     12.3.3 开始创建人造select元素     12.3.4 查找select元素     12.3.5 构建DOM元素    12.4 添加事件——为人造select赋予生命    12.5 让表单绽放光彩    12.6 行为修正     12.6.1 z-index来救急     12.6.2 键盘控制及其他细节     12.6.3 select太大了吗    12.7 最后的细节    12.8 继续替换select的冒险    12.9 小结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值