js高级程序设计第三版 第五章

引用类型:

 

创建引用类型(类似于C中的类),下面这两种写法都是一样的:

var s = new Object();

s.init = function (){

   

}

 

 

var s = {

    init: function(){

 

    }

}

上面这两种写法是一样的,第二种简化

 

变量的访问方法,点和方括号都可以:

方括号的适用性更高:因为他可以使用动态变量、额外特殊字符、保留关键字、不存在变量之类。

不过除了上面几种特殊情况,比较建议使用点访问 。

 

Array类型:

创建数组对象:var s = new Array("1","2");  //这个创建时可以省略new的关键词的

 

exp:

var s = []

undefined

s[3]='name'

"name"

s

"name"

不存在的访问或者设置,补充undefined

 

判断某个对象是否是数组,你可能第一时间想到typeof和instanceof,但是,最好的使用为Array.isArray(obj)的方法

数组和string转化,常用的函数有join和splice,toString()之类

 

Array对象有一些常用的栈方法,满足栈方法的属性,先进后出,后进先出:

push(),array.push(val) //压入数组

pop(),array.pop() //取出数组最后一个元素

 

Array对象有一些常用的堆方法,满足堆方法的属性先进先出,后进后出:

shift(),array.shift()  //取出数组第一个元素

unshift(), array.unshift(val,val...) //从头部推入数组:

 

Array重排序:

数组中存在reverse()和sort()两个排序方法: //这个排序是字典排序的 ,字符串的话, 10会在5之前

一个是正序,一个是倒叙

相应若要对json对象中某个属性排序,返回json对象,可以查看扩展

sort(function(){returnxx})

 

Contact()方法可以创建一个新的数组,吧两个数组连接起来:

Arr1.contact(Arr2) 

Slice()则是拆分后形成数组:Slice(start, end)

Splice() 方法可以根据参数,完成删除,插入和替换的作用!!

indexOf() 判断数组中是否存在某个元素,返回位置,从数组头部开始查找

lastIndexOf()则是从数组尾部开始查找

迭代方法:

every(),filter(),forEach(),map(),some() //。。。。

//every保证每个元素都满足,some至少一个元素满足

//其他三个方法都是每个元素进行相应操作

这几个迭代方法,都不会修改副本中的值

 

reduce()和reduceRight()方法:一个从左到右,一个从右到左:

函数接受4个值:前一个值,当前值,索引,数组对象

var values =[1,2,3,4,5]

values.reduce(function(pre,cur, index, array){

})

//这个函数很有意思,用来做斐波那契数列就很简单了~

 

Date类型:

Date.parse() 。接受一个日期,返回相应的毫秒数

Date的valueof()返回的不是字符串,而是返回日期的毫秒表示。

对这个主要一些函数,获取年月日操作的函数之类..

 

RegExp类型:

创建一个正则表达式,类似于:var expression = /pattern /flags ;

 

g:表示全局模式,即全局匹配

i:表示不区分大小写。

m:多行匹配模式

 

var p = /[bc]at/i    匹配第一个bat,cat,不区分大小写。

 

推荐使用new RegExp

 

RegExp实例属性:

var p=/\[bc\]at/i

undefined

p.global //是否设置了g标志

false

p.ignoreCase //是否设置了i

true

p.lastIndex //搜索下一个匹配项的字符位置,从0算起

0

p.source //正则表达式的字符串表示

"\[bc\]at"

 

RegExp的实例方法主要是exec():

接受一个字符串,没有匹配返回null,返回值为匹配的字符串数组

设置全局标志g,每次exec都会往下去找,不设置,则每次都返回第一个匹配的元素!

test也是接受字符串:返回值值为true,false

var text ="cat,bat,dat"

undefined

var p = /.at/

undefined

p.test(text)

true

p.exec(text)

"cat"

p.exec(text)

"cat"

var p = /.at/g/

SyntaxError: Unexpected token }

var p = /.at/g

undefined

p.exec(text)

"cat"

p.exec(text)

"bat"

p.exec(text)

"dat"

p.exec(text)

null

p.exec(text)

"cat"

var text ="cat,bat,dat"

undefined

var p = /.at/

undefined

p.test(text)

true

p.exec(text)

"cat"

p.exec(text)

"cat"

var p = /.at/g

undefined

p.exec(text)

"cat"

p.exec(text)

"bat"

p.exec(text)

"dat"

p.exec(text)

null

p.exec(text)

"cat"



Function类型:

定义阶乘都需要用到递归算法:

function factorial(num ) {

if(num < = 1){return 1}

else {return num *arguments.callee(num-1)}

}

函数属性,length表示接受的传递参数个数

 

基本包装类:

var s1 ="test"

undefined

s1.color ="red"

"red"

s1.color

undefined

s1

"test"

原因是执行第二行创建的s1.color对象,在执行第三行代码的时候已经被销毁了。

 

String类型的对象,有一个Length的方法,可以 获取这个对象的长度。

 

charAt charCodeAt返回字符串相应位置的char字符或者字符编码,也可以使用string[1]这种方式访问

match和search函数均可接收字符串或正则表达式

localCompare()方法可以比较两个字符串

 

Math,和min和max用法:

var max =Math.max(1,2,3,4,5);

var min=Math.min(1,2,3,4,5);

但是,经常,我们要取值的是在一个数组中取到最大和最小的值。那么,这个时候apply函数就有很大的作用了!

var values =[1,2,3,4,5,6]

var max =Math.max.apply(Math, values);

 

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、付费专栏及课程。

余额充值