
Javascript高级程序设计
ZHOU_VIP
这个作者很懒,什么都没留下…
展开
-
JavaScript高级程序设计(第3版)源代码和勘误
http://www.wrox.com/WileyCDA/WroxTitle/Professional-JavaScript-for-Web-Developers-3rd-Edition.productCd-1118026691,descCd-DOWNLOAD.html原创 2020-03-21 09:42:28 · 456 阅读 · 0 评论 -
第1章 JavaScript 简介
JavaScript 诞生于1995 年。1.1 JavaScript 简史略1.2 JavaScript 实现一个完整的JavaScript 实现应该由下列三个不同的部分组成核心(ECMAScript)文档对象模型(DOM)浏览器对象模型(BOM)1.2.1 ECMAScript1. ECMAScript 的版本ECMAScri原创 2016-12-29 11:00:39 · 435 阅读 · 0 评论 -
第2章 在HTML 中使用JavaScript
1.元素使用元素的方式有两种:直接在页面中嵌入JavaScript 代码和包含外部JavaScript文件。在使用元素嵌入JavaScript 代码时,只须为指定type 属性。然后,像下面这样把JavaScript 代码直接放在元素内部即可: function sayHi() { alert("Hi!"); }如果要通原创 2016-12-21 10:59:49 · 575 阅读 · 0 评论 -
第3章 基本概念(1)语法 关键字和保留字 变量
1. 语法1.1 区分大小写ECMAScript 中的一切(变量、函数名和操作符)都区分大小写。这也就意味着,变量名test 和变量名Test 分别表示两个不同的变量,而函数名不能使用typeof,因为它是一个关键字,但typeOf 则完全可以是一个有效的函数名。1.2 标识符标识符,就是指变量、函数、属性的名字,或者函数的参数第一个字符必须是一个字母、下划线(_)原创 2016-12-21 14:17:54 · 542 阅读 · 0 评论 -
第3章 基本概念(2)数据类型:typeof操作符 Undefined类型 Null类型 Boolean类型
4. 数据类型ECMAScript 中有5 种简单数据类型(也称为基本数据类型):Undefined、Null、Boolean、Number和String。还有1 种复杂数据类型——Object,Object 本质上是由一组无序的名值对组成的。4.1 typeof操作符:检测给定变量的数据类型对一个值使用typeof 操作符可能返回下列某个字符串:"undefi原创 2016-12-21 15:19:23 · 647 阅读 · 0 评论 -
第3章 基本概念(3)数据类型:Number类型 String类型 Object类型
4.5 Number类型Number 类型应该是ECMAScript 中最令人关注的数据类型了,这种类型使用IEEE754 格式来表示整数和浮点数值(浮点数值在某些语言中也被称为双精度数值)。为支持各种数值类型,ECMA-262 定义了不同的数值字面量格式。最基本的数值字面量格式是十进制整数,十进制整数可以像下面这样直接在代码中输入:var intNum = 55; //原创 2016-12-21 16:56:04 · 997 阅读 · 0 评论 -
第3章 基本概念(4)操作符:一元操作符......
5 操作符原创 2016-12-21 17:31:32 · 671 阅读 · 0 评论 -
第3章 基本概念(5)语句:if语句 do-while语句 while语句 for语句 for-in语句......
6 语句6.1 if语句我们推荐的做法则是像下面这样: If Statement Example 2 var i = 24; if (i > 25) { alert("Greater than 25.") } else if (i < 0) {原创 2016-12-22 14:45:35 · 886 阅读 · 0 评论 -
第3章 基本概念(6)函数
7 函数函数对任何语言来说都是一个核心的概念。通过函数可以封装任意多条语句,而且可以在任何地方、任何时候调用执行。ECMAScript 中的函数使用function 关键字来声明,后跟一组参数以及函数体。函数的基本语法如下所示:function functionName(arg0, arg1,...,argN) { statements}以下是一个函数示例:原创 2016-12-22 15:59:41 · 831 阅读 · 0 评论 -
第4章 变量、作用域和内存问题(1)基本类型和引用类型的值
按照ECMA-262 的定义,JavaScript 的变量与其他语言的变量有很大区别。JavaScript 变量松散类型的本质,决定了它只是在特定时间用于保存特定值的一个名字而已。由于不存在定义某个变量必须要保存何种数据类型值的规则,变量的值及其数据类型可以在脚本的生命周期内改变。尽管从某种角度看,这可能是一个既有趣又强大,同时又容易出问题的特性,但JavaScript 变量实际的复杂原创 2016-12-22 17:46:31 · 450 阅读 · 0 评论 -
面向对象的程序设计(4)创建对象
6.2.4 组合使用构造函数模式和原型模式创建自定义类型的最常见方式,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。另外,这种混成模式还支持向构造函数传递参数;可谓是集两种模式之长。下面的代码重写了前面的例子。原创 2017-01-10 10:24:49 · 470 阅读 · 0 评论 -
第20章 JSON
曾经有一段时间,XML 是互联网上传输结构化数据的事实标准。Web 服务的第一次浪潮很大程度上都是建立在XML 之上的,突出的特点是服务器与服务器间通信。然而,业界一直不乏质疑XML 的声音。不少人认为XML 过于烦琐、冗长。为解决这个问题,也涌现了一些方案。不过,Web的发展方向已经改变了。2006 年,Douglas Crockford 把JSON(JavaScript Obj原创 2017-01-17 17:47:45 · 481 阅读 · 0 评论 -
第21章 Ajax 与Comet(1)
2005 年,Jesse James Garrett 发表了一篇在线文章,题为“Ajax: A new Approach to WebApplications”(http://www.adaptivepath.com/ideas/essays/archives/000385.php)。他在这篇文章里介绍了一种技术,用他的话说,就叫Ajax,是对Asynchronous JavaScript原创 2017-01-18 17:57:02 · 390 阅读 · 0 评论 -
第21章 Ajax 与Comet(2)
21.1.2 HTTP头部信息每个HTTP 请求和响应都会带有相应的头部信息,其中有的对开发人员有用,有的也没有什么用。XHR 对象也提供了操作这两种头部(即请求头部和响应头部)信息的方法。默认情况下,在发送XHR 请求的同时,还会发送下列头部信息。Accept:浏览器能够处理的内容类型。Accept-Charset:浏览器能够显示的字符集。Accept-Encod原创 2017-01-19 17:18:49 · 393 阅读 · 0 评论 -
第6章 面向对象的程序设计(3)创建对象
6.2.3 原型模式我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那么prototype 就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是可以让所有对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的原创 2017-01-04 15:11:45 · 436 阅读 · 0 评论 -
第6章 面向对象的程序设计(2)创建对象
虽然Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。为解决这个问题,人们开始使用工厂模式的一种变体。原创 2017-01-03 17:41:40 · 516 阅读 · 0 评论 -
第4章 变量、作用域和内存问题(2)
1.3 传递参数ECMAScript 中所有函数的参数都是按值传递的。也就是说,把函数外部的值复制给函数内部的参数,就和把值从一个变量复制到另一个变量一样。基本类型值的传递如同基本类型变量的复制一样,而引用类型值的传递,则如同引用类型变量的复制一样。有不少开发人员在这一点上可能会感到困惑,因为访问变量有按值和按引用两种方式,而参数只能按值传递。在向参数传递基本类型的值时,被传递原创 2016-12-22 17:59:03 · 197 阅读 · 0 评论 -
第4章 变量、作用域和内存问题(2)执行环境及作用域
2 执行环境及作用域执行环境(execution context,为简单起见,有时也称为“环境”)是JavaScript 中最为重要的一个概念。执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个与之关联的变量对象(variable object),环境中定义的所有变量和函数都保存在这个对象中。虽然我们编写的代码无法访问这个对象,但解析器在处理数据原创 2016-12-23 16:34:30 · 338 阅读 · 0 评论 -
第5章 引用类型(2)Array 类型
5.2 Array 类型除了Object 之外,Array 类型恐怕是ECMAScript 中最常用的类型了。而且,ECMAScript 中的数组与其他多数语言中的数组有着相当大的区别。虽然ECMAScript 数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript 数组的每一项可以保存任何类型的数据。也就是说,可以用数组的第一个位置来保存字符串,用第原创 2016-12-26 16:15:22 · 374 阅读 · 0 评论 -
第5章 引用类型(3)Array 类型
5.2.2 转换方法如前所述,所有对象都具有toLocaleString()、toString()和valueOf()方法。其中,调用数组的toString()方法会返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串。而调用valueOf()返回的还是数组。实际上,为了创建这个字符串会调用数组每一项的toString()方法。来看下面这个例子。 Ar原创 2016-12-26 17:44:41 · 328 阅读 · 0 评论 -
第5章 引用类型(4)Array 类型
5.2.7 位置方法ECMAScript 5 为数组实例添加了两个位置方法:indexOf()和lastIndexOf()。这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中,indexOf()方法从数组的开头(位置0)开始向后查找,lastIndexOf()方法则从数组的末尾开始向前查找。这两个方法都返回要查找的项在数组中的位置,或者在没找到的情况下返回原创 2016-12-26 17:54:35 · 376 阅读 · 0 评论 -
第5章 引用类型(5)Array 类型
5.2.8 迭代方法ECMAScript 5 为数组定义了5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this 的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。根据使用的方法不同,这个函数执行后的返回值可能会也可能不会影响方法的返回值。以下是这5 个迭代方法的作用。every原创 2016-12-26 22:00:16 · 325 阅读 · 0 评论 -
第5章 引用类型(6)Date 类型
5.3 Date 类型ECMAScript 中的Date 类型是在早期Java 中的java.util.Date 类基础上构建的。为此,Date类型使用自UTC(Coordinated Universal Time,国际协调时间)1970 年1 月1 日午夜(零时)开始经过的毫秒数来保存日期。在使用这种数据存储格式的条件下,Date 类型保存的日期能够精确到1970 年1月1 日之原创 2016-12-27 09:51:29 · 591 阅读 · 0 评论 -
第5章 引用类型(7)Date 类型
5.3.3 日期/时间组件方法到目前为止,剩下还未介绍的Date 类型的方法(如下表所示),都是直接取得和设置日期值中特定部分的方法了。需要注意的是,UTC 日期指的是在没有时区偏差的情况下(将日期转换为GMT 时间)的日期值。原创 2016-12-27 11:12:31 · 514 阅读 · 0 评论 -
第5章 引用类型(8)RegExp 类型 Function 类型
5.4 RegExp 类型略5.4.1 RegExp实例属性略5.4.2 RegExp实例方法略5.4.3 RegExp构造函数属性略5.4.4 模式的局限性略5.5 Function 类型说起来ECMAScript 中什么最有意思,我想那莫过于函数了——而有意思的根源,则在于函数实际上是对象。每个函数都是Function 类型的原创 2016-12-27 17:33:04 · 376 阅读 · 0 评论 -
第5章 引用类型(9)Function 类型
5.5.4 函数内部属性在函数内部,有两个特殊的对象:arguments 和this。其中,arguments 在第3 章曾经介绍过,它是一个类数组对象,包含着传入函数中的所有参数。虽然arguments 的主要用途是保存函数参数,但这个对象还有一个名叫callee 的属性,该属性是一个指针,指向拥有这个arguments 对象的函数。请看下面这个非常经典的阶乘函数。原创 2016-12-27 22:01:25 · 407 阅读 · 0 评论 -
第5章 引用类型(10)基本包装类型
5.6 基本包装类型为了便于操作基本类型值,ECMAScript 还提供了3 个特殊的引用类型:Boolean、Number 和String。这些类型与本章介绍的其他引用类型相似,但同时也具有与各自的基本类型相应的特殊行为。实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。来看下面的例子。var s1 =原创 2016-12-28 16:34:47 · 625 阅读 · 0 评论 -
第5章 引用类型(11)单体内置对象
5.7 单体内置对象ECMA-262 对内置对象的定义是:“由ECMAScript 实现提供的、不依赖于宿主环境的对象,这些对象在ECMAScript 程序执行之前就已经存在了。”意思就是说,开发人员不必显式地实例化内置对象,因为它们已经实例化了。前面我们已经介绍了大多数内置对象,例如Object、Array 和String。ECMA-262 还定义了两个单体内置对象:Global原创 2016-12-28 17:11:35 · 341 阅读 · 0 评论 -
第6章 面向对象的程序设计(1)理解对象
面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象。前面提到过,ECMAScript 中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同。ECMA-262 把对象定义为:“无序属性的集合,其属性可以包含基本值、对象或者函数。”严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的原创 2017-01-03 17:17:43 · 584 阅读 · 0 评论 -
第4章 变量、作用域和内存问题(3)垃圾收集
4.3 垃圾收集JavaScript 具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。而在C 和C++之类的语言中,开发人员的一项基本任务就是手工跟踪内存的使用情况,这是造成许多问题的一个根源。在编写JavaScript 程序时,开发人员不用再关心内存使用问题,所需内存的分配以及无用内存的回收完全实现了自动管理。这种垃圾收集机制的原理其实很简单:找出那些原创 2016-12-26 11:27:48 · 324 阅读 · 0 评论 -
第5章 引用类型(1)Object 类型
引用类型的值(对象)是引用类型的一个实例。在ECMAScript 中,引用类型是一种数据结构,用于将数据和功能组织在一起。它也常被称为类,但这种称呼并不妥当。尽管ECMAScript从技术上讲是一门面向对象的语言,但它不具备传统的面向对象语言所支持的类和接口等基本结构。引用类型有时候也被称为对象定义,因为它们描述的是一类对象所具有的属性和方法。PS:虽然引用类型与类看起来相似,但它原创 2016-12-26 14:22:48 · 514 阅读 · 0 评论