Object类型
创建方式:
1.使用new操作符后跟构造函数
var p = new Object();
2.使用对象字面量,这种方式不会调用构造函数
var p = {
name:"aaa",
getName: function(){
return this.name;
}
};
属性的访问一般使用点表示法,也支持使用方括号表示法。
Array类型
可以存放任何类型的数据。
创建方式:
1.使用构造函数
var c = new Array();
var c = new Array(20);//length = 20
var c = new Array("red", "blue", "green");
var c = Array();//可以省略new
2.字面量
var c = ['red', 'blue', 'green'];
var c = [];
访问元素
方括号[]加索引值,需要说明的是length不是只读的。
alert(c[0]);
检测数组
isArray(),而不是instanceof。
转换方法
toString()、toLocaleString()、valueOf()
join():示例var x = new Array(10).join("abc");
栈方法
push()、pop()
队列方法
1.shift()、push()
2.unshift()、pop()
重排序方法
reverse()
sort()
操作方法
concat():连接数组和参数,返回新数组
slice():返回子数组
splice():删除,splice(0, 2)删除前两个;插入,splice(2, 0, "red", "green"),位置2插入两个;替换,splice(2, 1, "red"),删除当前位置2的项,然后从2插入。影响原数组,返回删除的项,如果没有删除返回空数组。
位置方法
indexOf()、lastIndexOf()
迭代方法
every:每项都运行给定函数,每项返回true,则返回true;
filter:每项运行给定函数,返回该函数返回true的项组成的数组;
forEach:每项运行给定函数,无返回值
map:每项运行函数,返回调用结果组成的数组
some:每项运行函数,任一项返回true,则返回true
缩小方法
reduce、reduceRight:迭代数组的所有项,然后构建一个最终返回的值。接收两个参数:一个在每一项上调用的函数和(可选)作为缩小基础的初始值。函数有4个参数:前一个值、当前值、项的索引和数组对象。
Date类型
RegExp类型
语法
var expression = /pattern/flags;
var pattern = new RegExp("字符串", "g/i/m");
pattern:正则表达式
flags:g,表示全局模式;i,表示不区分大小写;m,表示多行模式。
需要转义的元字符:([{\^$|)?*+.]}
举例
字面量模式 等价的字符串
/\[bc\]at/ "\\[bc\\]at"
/\.at/ "\\.at"
/name\/age/ "name\\/age"
/\d.\d{1, 2}/ "\\d.\\d{1,2}"
使用正则表达式字面量和使用RegExp构造函数创建的正则表达式不一样。ECMAScript3中,正则表达式字面量始终会共享一个RegExp实例,而使用构造函数创建的每一个新RegExp实例都是一个新实例。
var re = null;
for (int i = 0; i < 10; i++){
re = /cat/g;
re.test("catastrophe");
}
for (int i = 0; i < 10; i++){
re = new RegExp("cat", "g");
re.test("catastrophe");
}
在第一个循环中,即使是在循环体重指定的,但实际上只为/cat/创建了一个RegExp实例。由于实例属性不会重置,所以在循环中再次调用test()方法会失败。因为第一次调用test找到了cat,但第二次调用时从索引为3的字符开始的,找不到了。由于会测试到字符串末尾,所以下一次再调用时就又从开头开始了。但是第二个循环中每次循环中创建正则表达式,每次都会返回true。ECMAScript5明确规定,使用正则表达式字面量必需像使用RegExp构造函数一样,每次都创建新的RegExp实例。
实例属性
global:布尔值,表示是否设置了g标志;
ignoreCase:布尔值,表示是否设置了i标志;
lastIndex:整数,表示开始搜索下一个匹配项的字符位置,从0算起;
multiline:布尔值,表示是否设置了m标志;
source:正则表达式的字符串表示,按照字面量形式而非传入构造函数中的字符串模式返回。
实例方法
exec():接收一个参数,即要应用模式的字符串,然后返回包含第一个匹配项信息的数组;或者在没有匹配的情况下返回null。返回的数组虽然是Array的实例,但包含两个额外的属性:index和input。其中index表示匹配项在字符串中的位置,input表示应用正则表达式的字符串。在数组中,第一项是与整个模式匹配的字符串,其他项是与模式中的捕获组匹配的字符串。
var text = "mom and dad and baby";
var p = /mom( and dad (and baby)?)?/gi;
var matches = p.exec(text);
alert(matches.index);//0
alert(matches.input);//"mom and dad and baby"
alert(matches[0]);//"mom and dad and baby"
alert(matches[1]);//" and dad and baby"
alert(matches[2]);//" and baby"
exec(),即使在模式中设置了全局标志g,它每次也只会返回一个匹配项。在不设置全局标志的情况下,在同一个字符串上多次调用exec将始终返回第一个匹配的信息。而设置了全局标志时,每次调用都会在字符串中继续查找新匹配项。
var text = "cat, bat, sat, fat";
var p1 = /.at/;
var m1 = p1.exec(text);
alert(m1.index);// 0
alert(m1[0]);//cat
alert(p1.lastIndex);//0
m1 = p1.exec(text);
alert(m1.index);// 0
alert(m1[0]);//cat
alert(p1.lastIndex);//0
var p2 = /.at/g;
var m2 = p2.exec(text);
alert(m2.index);// 0
alert(m2[0]);//cat
alert(p2.lastIndex);//0
m2 = p2.exec(text);
alert(m2.index);// 5
alert(m2[0]);//bat
alert(p2.lastIndex);//8
test():接受一个字符串参数。在模式与该参数匹配的情况下返回true;否则,返回false。
构造函数属性
适用于作用域中的所有正则表达式,并且基于所执行的最近一次正则表达式操作而变化。
长属性 短属性 说明
input $_ 最近一次要匹配的字符串
lastMatch $& 最近一次的匹配项。
lastParen $+ 最近一次匹配的捕获组
leftContext $、 input字符串中lastMatch之前的文本
multiline $* 布尔值,表示是否所有表达式都使用多行模式
rightContext $' Input字符串中lastMatch之后的文本
段属性要通过[]来访问。
Function类型
没有重载
函数声明和函数表达式
解析器在向执行环境中加载数据时,对函数声明和函数表达式并非一视同仁。解析器会率先读取函数声明,并使其在执行任何代码之前可用;至于函数表达式,则必须等到解析器执行到他所在的代码行,才会真正被解释执行。即使声明函数的代码在调用它的代码后面,也能把函数声明提升到顶部。
函数内部属性
arguments、this、calle
函数属性和方法
length、prototype
每个函数包含两个非继承而来的方法:apply、call。
apply:运行函数的作用域,参数数组。
call:对象,其余参数诸葛列出。
使用call和apply来扩充作用域的最大好处,就是对象不需要与方法有任何耦合关系。
ECMAScript5中还定义了一个方法bind。这个方法会创建一个函数的实例,其this值会被绑定到传给bind函数的值。
基本包装类型
Boolean、Number、String。
引用类型与基本包装类型的主要区别就是对象的生存期。使用new操作符创建的引用类型实例,在执行流离开当前作用域之前都一直保存在内存中。而自动创建的基本包装类型的对象,则只存在于一行代码的执行瞬间,然后立即被销毁。这以为着我们不能再运行时为基本类型值添加属性和方法。
String类型
字符方法
charAt、charCodeAt
字符串操作方法
concat slice substr substring
字符串位置方法
indexOf lastIndexOf
trim
字符串大小写转换方法
toLowerCase toUpperCase
字符串模式匹配方法
match 本质上同exec
search 始终是从字符串开头向后查找模式
replace
split
HTML方法
anchor
big
bold
fixed
fontcolor
fontsize
italics
link
small
strike
sub
sup
单体内置对象
Global对象
URI编码方法
encodeURI 整个URI 不会对本身属于URI的特殊字符进行编码,如冒号、正斜杠、问号和井号
encodeURIComponent 某一段
对应的decodeURI decodeURIComponent
eval
Math对象