第5章 引用类型

数组

栈方法(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随机数
还有一些正切余弦等等

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值