第五章 引用类型
Object 类型
- 对象字面量,对象定义的一种简写形式
- 访问对象属性
- 点表示法(推荐)
- 方括号表示法
- 可以通过变量来访问属性
- 可以访问含非字母非数字的属性名
Array 类型
-
每一项可以保存任何类型的数据
-
检测数组
- value instanceof Array
- Array.isArray(value) // ES5 新增
-
转换方法
- toString()
- valueOf()
- toLocalString()
- join() // 定义分隔符
- null / undefined 时返回空串
-
栈/队列方法
- push() // 在末尾推入元素
- pop() // 弹出末位元素
- shift() // 弹出首位元素
- unshift() // 在首位添加元素
-
重排序方法
- reverse() // 反转数组
- sort() // 排序,可以接受一个比较函数作为参数
-
操作方法(可用于深拷贝)
- concat()
- slice()
-
位置方法
- indexOf()
- lastIndexOf()
-
迭代方法
- every()
- some()
- filter()
- forEach()
- map()
-
归并方法
- reduce()
- reduceRight()
Date 类型
-
基本方法
- Date.parse(string)
- Date.UTC() // Date 构造函数接收的参数与 Date.UTC() 相同
- Date.now() // ES5 新增
- +new Date() // 使用+操作符把 Data 对象转换成字符串,与 now() 作用相同
-
继承的方法
- 重写了引用类型的 toLocaleString()、toString()和 valueOf()方法
- toLocaleString()、toString() 在不同浏览器中返回值格式不同
- valueOf() 返回的是毫秒值,可以直接比较大小
-
日期格式化方法
- toDateString()
- toTimeString()
- toLocaleDateString()
- toLocaleTimeString()
- toUTCString()
RegExp 类型
-
正则表达式
- 格式: / pattern / flags
- flags
- g: 表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止
- i: 表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写
- m: 表示多行(multiline)模式,即在到达一行文本末尾时还会继续查找下一行中是否存在与模式匹配的项
-
实例属性
- global:布尔值,表示是否设置了 g 标志
- ignoreCase:布尔值,表示是否设置了 i 标志
- lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从 0 算起(在全局匹配模式下,lastIndex 的值在每次调用 exec、test 后都会增加,而在非全局模式下则始终保持不变)
- multiline:布尔值,表示是否设置了 m 标志
- source:正则表达式的字符串表示
-
实例方法
- exec() // 捕获组
-
RegExp 构造函数属性
- RegExp.input //最近一次要匹配的字符串。Opera 未实现此属性
- RegExp.leftContext // 最近一次的匹配项。Opera 未实现此属性
- RegExp.rightContext // 最近一次匹配的捕获组。Opera 未实现此属性
- RegExp.lastMatch // input 字符串中 lastMatch 之前的文本
- RegExp.lastParen // 布尔值,表示是否所有表达式都使用多行模式。IE 和 Opera 未实现此属性
- RegExp.multiline // Input字符串中lastMatch之后的文本
-
模式的局限性
- 不支持某些高级正则表达式特性
Function 类型
-
函数的实质是对象,函数名可以看做是指向函数对象的指针
-
没有重载,重新定义时会覆盖之前的
-
函数声明和函数表达式
- 函数声明:function sum(a, b) {}
- 函数表达式:var sum = function(a, b) {}
- 解析器会率先读取函数声明,在执行任何代码之前可用;函数表达式则必须等到解析器执行到它所在的代码行时,才会真正被解释执行
-
函数名本身就是变量,可以作为参数传进其他函数中
-
函数内部属性
- arguments
- arguments.callee // 指向拥有这个 arguments 对象的函数
- this // 执行函数的环境对象
- caller // ES5 新增,调用当前函数的函数引用,在全局作用域调用时为 null
- arguments
-
函数属性和方法
- length // 接收参数的个数
- prototype // 保存所有实例方法,不可枚举
- apply(作用域, 参数数组) // 在特定的作用域中调用函数
- call(作用域, 参数1, 参数2 …) // 在特定的作用域中调用函数
- bind() // ES5 新增
基本包装类型
-
自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。
-
Boolean 类型
- “object” 类型
-
Number 类型
- toFixed()
- toExponential()
- toPrecision()
-
String 类型
- charAt()
- charCodeAt()
- trim()
- match(pattern) // 与 pattern.exec(text) 相同
- toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase()
- localeCompare() // 比较字典序
- fromCharCode() // 传入多个字符编码
单体内置对象
-
Global 对象
- URI 编码方法
- encodeURI() // 不会对本身属于 URI 的特殊字符进行编码
- encodeURIComponent() // 对所有非标准字符进行编码
- decodeURI()
- decodeURIComponent()
- eval() // 将传入参数当作实际的 ECMAScript 语句解析
- Global 对象的属性
- undefined、NaN、Infinity
- Object、Function
- window 对象
- URI 编码方法
-
Math 对象
- 属性:E、LN10、LN2、LOG2E、LOG10E、PI、SQET1_2、SQRT2
- min()、max()
- Math.max.apply(Math, Array)
- 舍入方法:ceil()、floor()、round()
- random() // [0, 1) 的随机数