@yacent
2016-05-11T00:47:42.000000Z
字数 1776
阅读 805
JavaScript
第三章:
基本包装类型对其余基本类型的处理
Number:
对于 null,将其转为0,undefined则转为 NaN,string则根据parseInt或者 parseFloat来进行,boolean,true为0,false 为1
String
对于null,转为null,undefined转为undefined,其余类型都调用其toString()函数
Boolean
对于string,空字符串为false,非空为true,number,除了0 和NaN之外,都为true
操作符
求布尔值:
1. Boolean
2. !! 即可获得变量的布尔值
逻辑与/或 不一定返回布尔值,有可能返回对象
乘性操作符:
1. "+": 若有一个操作符为字符串,则拼接
2. "-": 若有操作符为非数值,则调用Number,再计算
相等操作符:
1. == : 做类型转换 且比较
2. === : 只比较,不转换
第四章
参数类型
1. 基本类型(undefined, null, string, number, boolean)
按值传递,拷贝副本,但不影响本身
2. 引用类型(array, obejct......)
引用传递,指向同一内存空间,只是别名,影响本身
检测二者的类型:
1. 基本数据类型: typeof
2. 引用数据类型: instanceof
垃圾回收机制
1. 标记清除(常用)
2. 引用计数
会产生问题:如循环引用时,无法释放内存
第五章
引用类型
Obejct:
创建object的方式
1. new Object()
2. 字面量的方式
3. Object.create()
Array:
1. 检测是否为array
a. Array.isArray()
b. Object.prototype.toString.call() == '[object Array]'
2. alert 传入参数为一字符串,为非字符串时,调用其toString()函数
3. Array → String
a. toString()
b. arr.join('')
4. 数组常见操作方法
a. push、pop、shift、unshift
b. reverse、sort
c. concat、slice、splice
d. indexOf、lastIndexOf
e. every、some、forEach、map、filter
f. reduce、reduceRight
Date: 了解即可
RegExp:
1. 定义
a. /[a-z]/gim
b. new RegExp("", "")
2. 实例方法
a. exec()
b. test()
3. RegExp实例属性
RegExp.lastMatch、RegExp.input、RegExp.leftContext、RegExp.rightContext、RegExp.LastParen、RegExp.$1……
Function:
1. 声明
a. 函数声明
b. 函数表达式
c. 二者是不同的,解析器会优先处理函数声明,会将其提升至代码顶部,我们称之为 函数声明提升,而对于函数表达式,则只会运行到时,才真正解析执行
2. 函数内部属性
a. arguments,传入实际参数的数组,伪数组
b. caller
c. this
3. 函数属性
a. length,返回的是定义函数时,参数列表中所需的参数的个数
4. 函数方法
a. call()
b. apply()
c. bind()
PS: call和apply都是用来改变作用域的用处,二者不同之处在于传入参数的方式不同,call需要一个个地传入,而apply则是传入数组
基本包装类型:Boolean、String、Number
问:为什么平时在用基本类型(string,number,boolean)时,其不为对象,却可以使用类似于str.subString()等的方法呢?
答:因为在读取模式下访问基本类型的变量时,系统后台自动帮我们做了如下的事情,
a. 创建String类型的一个实例 (即var s1 = new String)
b. 调用相对应的方法 (s1.subString())
c. 销毁该实例 (s1 = null)
对象类型:
1. 单体内置对象: Global、Object、Array、Date……
2. 宿主对象:window、document……
3. 用户自定义对象
Math:
1. 常用操作
a. min、max
b. ceil、floor、round
c. random、abs、pow、sqrt