数组
栈方法(LIFO先进后出last in first out)
push()
pop()
队列方法(FIFO先进先出first in first out)
shift()移除第一项
unshift()添加第一项
重排序方法
reverse() 数组顺序倒置
sort() 默认将值转换成字符串比较大小 升序(最小在前)
可以写个比较函数:
function compare(value1,value2){
return value2-value1;
}
var values=[0,1,5,10,15];
values.sort(compare); //[15,10,5,1,0]
操作方法
concat() 基于原数组新创建数组
var colors=["red","green","bulue"];
var colors2=colors.concat("yellow",["black","brown"])
alert(colors2); //["red","green","bulue","yellow","black","brown"];
slice(start,end) 获取起始到截止位置的数组
splice(起始位置,删除几项,插入项) 可以删除 插入 替换
var colors=["red","green","bulue"];
var removed=colors.splice(0,1); //删除第一项
removed=colors.splice(1,0,"yellow","orange"); //从第一项插入2项
removed=colors.splice(1,1,"red","purple"); //插入2项删除1项
位置方法
indexOf() lastIndexOf()
迭代方法(P96)
每个都接收2个函数:1.要在每一项上运行的函数2.运行该函数的作用域对象
传入这些方法中的函数会接收3个参数:
1.数组项的值
2.该项在数组中的位置
3.数组对象本身
every()
filter()
forEach()
map()
some()
以上方法都不会改变数组的数值
归并方法
reduce()从前往后迭代
reduceRight()从后往前迭代
Date类型
Date.now()返回当前时间UTC毫秒数
RegExp类型
Perl语法创建
var expression=/ pattern /flags
默认是只匹配一行,并且找到符合的第一个就停止
flag包括g (全局),i(不区分大小写),m(多行模式)
要匹配元字符都必须转义。元字符包括:
( [ { \ ^ $ | ? * + . } ] )
var p1 = /[bc]at/i; //匹配第一个bat或cat 不区分大小写
var p2 = /\[bc\]at/i; //匹配第一个[bc]at 不区分大小写
var p3 = /.at/gi; //匹配所有以at结尾的 3个字符的组合,不区分大小写
var p4 = /\.at/gi; //匹配所有.at 不区分大小写
构造函数创建
var expression=new RegExp("[bc]at",“i”)
由于RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符进行双重转义。所有元字符都必须双重转义,那些已经转义过的字符也是如此,例如 \n (字符\在字符串中通常被转义为\,而在正则表达式字符串中就会变成\\)
字面量模式 | 等价的字符串 |
---|---|
/[bc]at/ | “\\[bc\\]at” |
/.at/ | “\\.at” |
/name/age/ | “name\\/age” |
/\d.\d{1,2} | “\\d.\\d{1,2}” |
/\w\hello\\123 | “\\w\\\\hellow\\\\123/” |
没有new 实例属性不会重置
RegExp实例属性
global:布尔值
ignoreCase:布尔值
lastIndex:整数
multiline:布尔值
source:正则字符串
RegExp实例方法
patten.exec(text)
该方法每次都只返回一个匹配项,并且如果patten没有g,则每次都从头开始,如果有,则每次都从上次的位置之后继续匹配
patten.test(text) ,如果包含匹配项则返回true
Function
函数名仅仅是一个包含指针的变量而已
函数声明和函数表达式
解析器会先读取函数声明,等解析器读到函数表达式所在行时函数才会真正执行
alert(sum(10,10)); //正常
function sum(num1,num2){
return num1+num2;
}
alert(sum(10,10)); //错误 下面变成初始化而不是函数声明
var sum=function(num1,num2){
return num1+num2;
}
函数内部属性
arguments
this
递归算法可以使用arguments.callee解耦合
function factorial(num){
if(num<=1){
return 1;
}else{
//相当于return num * factorial(num-1),避免名称耦合
return num * arguments.callee(num-1)
}
}
var trueFactorial=factorial;
factorial=function(){
return 0;
}
alert(trueFactorial(5)) //120
alert(factorial(5)) //0
this引用的是函数执行的环境对象。
window.color="red"
var o{color:"blue"};
function sayColor(){
alertthis.color;
}
sayColor() //red
o.sayColor=sayColor
o.sayColor() //blue
caller:保存调用当前函数的函数的引用,如果是全局作用域中调用当前函数,则为Null;
函数的属性和方法
length:返回函数的参数个数
prototype:保存实例方法的真正所在,并且无法枚举,无法使用for-in
apply和call都是设置函数体内的this对象的值,只是接收参数方式不同。
apply(作用域,参数数组)
call(this,参数1,参数2,…)
bind() 创建实例,其this值会绑定传给bind函数的值。
基本包装类型
Number
Boolean
String
substring参数值小于0则直接当0处理
sunstr,slice参数可以小于0
单体内置对象
Global 所有全局作用域中定义的属性和函数都是Global对象的属性
window对象包含了Global
Math
Math.abs()绝对值
Math.min()
Math.max()
Math.ceil()向上舍入
Math.floor()向下舍入
Math.round()标准舍入
Math.random()返回 大于等于0小于1随机数
还有一些正切余弦等等