《JavaScript权威指南(第六版)》知识点总结(一)

第三章 类型、值和变量

        JS的数据类型分为:原始类型、对象类型。

        原始类型:数字、字符串、布尔值。

        普通对象是“命名值”的无序集合,数组是带编号的值的有序集合。函数是具有与它相关联的可执行代码的对象,通过调用函数来运行可执行代码,并返回结果。

        如果函数用来初始化(使用 new 运算符)一个新建的对象,我们称之为构造函数(constructor)。每个构造函数定义了一个类(class)对象,类可以看做是对象类型的子类型。

        除了数组类和函数类之外,JS定义了其他三种有用的类。日期(Date)类、正则(RegExp)类和错误(Error)类。


     3.4 null 和 undefined

        typeof null                      // object

        typeof undefined          // undefined

        null 与 undefined 不包括任何属性和方法


        3.6 包装对象

        字符串也有同样的属性和方法:

var s = 'hello world!';
var word = s.substring(s.indexOf(' ') + 1, s.length);<pre name="code" class="javascript">var s = 'hello';
s.toUpperCase();
s                 //'hello',原始字符串的值并未改变

         只要引用了字符串s的属性,JS就会将字符串通过调用 new String (s) 的方式转换成对象,这个对象继承了字符串的方法,并被用来处理属性的引用。一旦属性引用结束,这个新对象就会销毁。 

        同字符串一样,数字和布尔值也具有各自的方法。

var s = 'test';
s.len = 4;
var t = s.len;

alert(t);
        上例中,t 是undefined。

        存取字符串、数字或布尔值的属性时创建的临时对象称做包装对象。


        3.7 不可变的原始值和可变的对象引用

var s = 'hello';
s.toUpperCase();
s                 //'hello',原始字符串的值并未改变

var o = {x: 1};
o.x = 2;
o.y = 3;

var a = [1, 2, 3];
a[0] = 0;
a[3] = 4;         //对象与字符串可以修改的
        对象的比较并非值的比较,即使两个对象包含相同的属性及相同的值,它们也是不相等的。各个索引元素完全相等的两个数组也不相等。

        我们通常将对象称为引用类型,以此来和JS的基本类型区分开来。对象的比较均是引用的比较,当且仅当它们引用同一个基对象时,它们才相等。

var a = [];
var b = a;
b[0] = 1;
a[0]              //1
a === b;          //true,因为a和b引用同一个数组


var a = ['a', 'b', 'c'];
var b = [];

for (var i = 0; i < a.length; i++) {
  b[i] = a[i];
}
        上例的 a 与 b 不相等,因为是两个数组。下面的函数可以比较两个数组的内容是否相同。

function equalArrays(a, b) {
  if (a.length !== b.length) {
    return false;
  }
  for (var i = 0; i < a.length; i++) {
    if (a[i] !== b[i]) {
      return false;
    }
  }
  return true;
}

        3.8 类型转换

        3.8.2 显示类型转换

Number('3');           //3
String(false);         //false 或使用 false.toString()
Boolean([]);           //true
Object(3);             //new Number(3)

        JS中某些运算符会做隐式的类型转换

x + ''             //String(x)
+x                 //Number(x),也可以写成 x-0
!!x                //Boolean(x),注意是双叹号

        Number类定义的 toString () 方法可以接收表示转换基数的可选参数,如果不指定此参数,转换将基于十进制。

        Number类型定义的 toFixed () 方法中的参数为保留小数位数,toExponential () 方法中的参数为科学计数法保留小数的位数,toPrecision () 方法中的参数是有效数字的位数。

        全局函数 parseInt () 与parseFloat () 可解析整数与浮点数,parseInt () 还可以将基数作为第二个参数。

var a = parseInt('077 blind mice', 8);       //63
var b = parseInt('0.7 kilo');                //0
var c = parseInt('.7 kilo');                 //NaN
var d = parseFloat('.7 kilo');               //0.7


        3.8.3 对象转换为原始值

        对象到布尔值的转换非常简单:所有的对象(包括数组和函数)都转换为 true。对于包装对象亦是如此:new Boolean(false)是一个对象而不是原始值,它将转换为 true。

({x: 1, y: 2}).toString()                 //'[object Object]'
[1, 2, 3].toString()                      //'1,2,3'
(function (x) { f(x); }).toString()       //'(function (x) { f(x); }).toString()'
/\d+/g.toString()                         //'/\\d+/g',注意转义符
new Date(2010.0.1).toString()             //'Fri Jan 01 2010 00:00:00 GMT-0800 (PST)'

        另一个转换对象的函数是valueOf () ,如果存在任意原始值,它就默认将对象转换为表示它的原始值。对象是复合值,而且大多数无法真正表示为一个原始值,因此默认的 valueOf () 方法简单地返回对象本身,而不是返回一个原始值。数组、函数和正则表达式简单地继承了这个默认方法。日期类定义的 valueOf () 方法会返回一个内部表示:1970年1月1日以来的毫秒数。


        3.10.1 函数作用域和声明提前

var scope = 'global';
function f() {
  console.log(scope);      //undefined
  var scope = 'local';
  console.log(scope);      //local
}

       

     3.10.2 作为属性的变量

var truevar = 1;           //声明一个不可删除的全局变量
fakevar = 2;               //创建全局对象的一个可删除的属性
this.fakevar2 = 3;         //同上
delete truevar;            //false
delete fakevar;            //true
delete this.fakevar2;      //true

        3.10.3 作用域链

JavaScript权威指南(第6版)》主要讲述的内容涵盖JavaScript语言本身,以及Web浏览器所实现的JavaScript API。本书第6版涵盖了HTML5和ECMAScript 5,很多章节完全重写,增加了当今Web开发的最佳实践的内容,新增的章节包括jQuery、服务器端JavaScript、图形编程以及 JavaScript式的面向对象。本书不仅适合初学者系统学习,也适合有经验的 JavaScript 开发者随手翻阅。 David Flanagan是一名程序员,也是一名作家,它的个人网站是 。他在O’Reilly出版的其他畅销书还包括《JavaScript Pocket Reference》、《The Ruby Programming Language》、以及《Java in a Nutshell》。David毕业于麻省理工学院,获得计算机科学与工程学位。他和妻子和孩子一起生活在西雅图和温哥华之间的美国太平洋西北海岸。 目录: 前言 第1章 JavaScript概述 1.1 JavaScript语言核心 1.2 客户端JavaScript 第一部分 JavaScript 语言核心 第2章 词法结构 2.1 字符集 2.2 注释 2.3 直接量 2.4 标识符和保留字 2.5 可选的分号 第3章 类型、值和变量 3.1 数字 3.2 文本 3.3 布尔值 3.4 null和undefined 3.5 全局对象 3.6 包装对象 3.7 不可变的原始值和可变的对象引用 3.8 类型转换 3.9 变量声明 3.10 变量作用域 第4章 表达式和运算符 4.1 原始表达式 4.2 对象和数组的初始化表达式 4.3 函数定义表达式 4.4 属性访问表达式 4.5 调用表达式 4.6 对象创建表达式 4.7 运算符概述 4.8 算术表达式 4.9 关系表达式 4.10 逻辑表达式 4.11 赋值表达式 4.12 表达式计算 4.13 其他运算符 第5章 语句 5.1 表达式语句 5.2 复合语句和空语句 5.3 声明语句 5.4 条件语句 5.5 循环 5.6 跳转 5.7 其他语句类型 5.8 JavaScript语句小结 第6章 对象 6.1 创建对象 6.2 属性的查询和设置 6.3 删除属性 6.4 检测属性 6.5 枚举属性 6.6 属性getter和setter 6.7 属性的特性 6.8 对象的三个属性 6.9 序列化对象 6.10 对象方法 第7章 数组 7.1 创建数组 7.2 数组元素的读和写 7.3 稀疏数组 7.4 数组长度 7.5 数组元素的添加和删除 7.6 数组遍历 7.7 多维数组 7.8 数组方法 7.9 ECMAScript 5中的数组方法 7.10 数组类型 7.11 类数组对象 7.12 作为数组的字符串 第8章 函数 8.1 函数定义 8.2 函数调用 8.3 函数的实参和形参 8.4 作为值的函数 8.5 作为命名空间的函数 8.6 闭包 8.7 函数属性、方法和构造函数 8.8 函数式编程 第9章 类和模块 9.1 类和原型 9.2 类和构造函数 9.3 JavaScript中Java式的类继承 9.4 类的扩充 9.5 类和类型 9.6 JavaScript中的面向对象技术 9.7 子类 9.8 ECMAScript 5 中的类 9.9 模块 第10章 正则表达式的模式匹配 10.1 正则表达式的定义 10.2 用于模式匹配的String方法 10.3 RegExp对象 第11章 JavaScript的子集和扩展 11.1 JavaScript的子集 11.2 常量和局部变量 11.3 解构赋值 11.4 迭代 11.5 函数简写 11.6 多catch 从句 11.7 E4X: ECMAScript for XML 第12章 服务器端JavaScript 12.1 用Rhino脚本化Java 12.2 用Node实现异步I/O 第二部分 客户端JavaScript 第13章 Web浏览器中的JavaScript 13.1 客户端JavaScript 13.2 在HTML里嵌入JavaScript 13.3 JavaScript程序的执行 13.4 兼容性和互用性 13.5 可访问性 13.6 安全性 13.7 客户端框架 第14章 Window对象 14.1 计时器 14.2 浏览器定位和导航 14.3 浏览历史 14.4 浏览器和屏幕信息 14.5 对话框 14.6 错误处理 14.7 作为Window对象属性的文档元素 14.8 多窗口和窗体 第15章 脚本化文档 15.1 DOM概览 15.2 选取文档元素 15.3 文档结构和遍历 15.4 属性 15.5 元素的内容 15.6 创建、插入和删除节点 15.7 例子:生成目录表 15.8 文档和元素的几何形状和滚动 15.9 HTML表单 15.10 其他文档特性 第16章 脚本化CSS 16.1 CSS概览 16.2 重要的CSS属性 16.3 脚本化内联样式 16.4 查询计算出的样式 16.5 脚本化CSS类 16.6 脚本化样式表 第17章 事件处理 17.1 事件类型 17.2 注册事件处理程序 17.3 事件处理程序的调用 17.4 文档加载事件 17.5 鼠标事件 17.6 鼠标滚轮事件 17.7 拖放事件 17.8 文本事件 17.9 键盘事件 第18章 脚本化HTTP 18.1 使用XMLHttpRequest 18.2 借助发送HTTP请求:JSONP 18.3 基于服务器端推送事件的Comet技术 第19章 jQuery类库 19.1 jQuery基础 19.2 jQuery的getter和setter 19.3 修改文档结构 19.4 使用jQuery处理事件 19.5 动画效果 19.6 jQuery中的Ajax 19.7 工具函数 19.8 jQuery选择器和选取方法 19.9 jQuery的插件扩展 19.10 jQuery UI类库 第20章 客户端存储 20.1 localStorage和sessionStorage 20.2 cookie 20.3 利用IE userData持久化数据 20.4 应用程序存储和离线Web应用 第21章 多媒体和图形编程 21.1 脚本化图片 21.2 脚本化音频和视频 21.3 SVG:可伸缩的矢量图形 21.4 中的图形 第22章 HTML5 API 22.1 地理位置 22.2 历史记录管理 22.3 跨域消息传递 22.4 Web Worker 22.5 类型化数组和ArrayBuffer 22.6 Blob 22.7 文件系统API 22.8 客户端数据库 22.9 Web套接字 第三部分 JavaScript核心参考 JavaScript核心参考 第四部分 客户端JavaScript参考 客户端JavaScript参考
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值