JavaScript中各种引用类型的常用操作方法小结
Object类型
Array类型
重排序方法:compare
升序:
functioncompare(value1,value2){ if(value1<value2){ return-1; } if(value1>value2){ return1; }else{ return0; } } varvalues=[0,1,5,10,15]; values.sort(compare); console.log(values);//[0,1,5,10,15]
降序:
functioncompare(value1,value2){ if(value1<value2){ return1; } if(value1>value2){ return-1; }else{ return0; } }
slice:
slice(start,end);slice()方法返回从参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起死和结束位置之间的项,但不包括结束位置的项。
varcolors=["red","green","blue","yellow","purple"]; varcolors2=colors.slice(1); varcolors3=colors.slice(1,4); console.log(colors2);//green,blue,yellow,purple console.log(colors3);//green,blue,yellow
splice:
splice()有删除,插入,替换的功能
删除:
需要两个参数,要删除的第一项的位置和要删除的项数。
varcolors=["red","green","blue"]; varremoved=colors.splice(0,1); console.log(colors);//greeen,blue console.log(removed);//red
插入:
需要三个参数:起始位置、0(要删除的项数)和要插入的项
varcolors=["red","green","blue"]; varremoved=colors.splice(1,0,"yellow","orange"); console.log(colors);//["red","yellow","orange","green","blue"] console.log(removed);//返回空
替换:
需要三个参数:起始位置、要删除的项数和要插入的任意数量的项。
varcolors=["red","green","blue"]; varremoved=colors.splice(1,1,"yellow","orange"); console.log(colors);//["red","yellow","orange","blue"] console.log(removed);//["green"]
Date类型
RegExp类型
varpattern1=/[bc]/i; varpattern2=newRegExp("[bc]at","i");
pattern1和pattern2是两个完全等价的正则表达式。要注意的是,传递给RegExp构造函数的两个参数都是字符串(不能把正则表达式字面量传递给RegExp构造函数)。由于RegExp构造函数的模式参数是字符串,所以在某些情况下要对字符串进行双重转义。
varpattern1=/[bc]/i; varpattern2=newRegExp("\\[bc\\]at","i");
RegExp实例方法
exec
exec接收一个参数,即要应用模式的字符串,然后返回包含第一个匹配信息的数组。
vartext="cat,bat,sat,fat"; varpattern1=/.at/; varmatches=pattern1.exec(text); console.log(matches);//["cat"]
match
match是字符串执行匹配正则表达式规则的方法,他的参数是正则表达
vartext="cat,bat,sat,fat"; varpattern1=/.at/; varmatches2=text.match(pattern1); console.log(matches2);//["cat"]
test
test()接收一个字符串参数
vartext="000-00-0000"; varpattern=/\d{3}-\d{2}-\d{4}/; if(pattern.test(text)){ console.log("Thepatternwasmatched");//Thepatternwasmatched }
Function类型
函数内部属性
把arguments转为数组
(function(){ varslice=Array.prototype.slice, aArguments=slice.apply(arguments); console.log(aArguments); })(10,20,30); arguments.callee
该属性是一个指针,指向拥有这个arguments对象的函数。当函数在严格模式下运行时,访问arguments.callee会导致错误。
函数属性和方法
length
length属性表示函数希望接收的命名参数的个数。
functionsayName(name){ alert(name); } functionsum(num1,num2){ returnnum1+num2; } functionsayHi(){ alert("hi"); } console.log(sayName.length);//1 console.log(sum.length);//2 console.log(sayHi.length);//0
prototype
call,apply
functionsum(num1,num2){ returnnum1+num2; } functioncallSum1(num1,num2){ returnsum.apply(this,arguments); } functioncallSum2(num1,num2){ returnsum.apply(this,[num1,num2]); } console.log(callSum1(10,10));//20 console.log(callSum2(10,10));//20 window.color="red"; varo={color:"blue"}; functionsayColor(){ console.log(this.color); } sayColor();//red sayColor.call(this);//red sayColor.call(window);//red sayColor.call(o);//blue
基本包装类型
varvalue="25"; varnumber=Number(value); console.log(typeofnumber); console.log(numberinstanceofNumber);//false varobj=newNumber(value); console.log(typeofobj); console.log(objinstanceofNumber);//true
Boolean类型
varfalseObject=newBoolean(false); varresult=falseObject&&true;//true //布尔表达式中的所有对象都会被转换为true,因此falseObject对象在布尔表达式中代表的是true console.log(result);//true varfalseValue=false; result=falseValue&&true; console.log(result);//false console.log(typeoffalseObject);//object console.log(typeoffalseValue);//Boolean console.log(falseObjectinstanceofBoolean);//true console.log(falseValueinstanceofBoolean);//false
Number类型
varnumberObject=newNumber(10); varnumberValue=10; console.log(typeofnumberObject);//Object console.log(typoefnumberValue);//number console.log(numberObjectinstanceofNumber);//true console.log(numberValueinstanceofNumber);//false
String类型
字符方法
charAt()charCodeAt()
charAt()方法以单字符字符串的形式返回给定位置的那个字符串。
charCodeAt()返回的是字符编码。
varstringValue="helloworld"; console.log(stringValue.charAt(1));//e console.log(stringValue.charCodeAt(1));//101
字符串操作方法
concat()
concat()用于将一或多个字符串拼接起来。
varstringValue="hello"; varresult=stringValue.concat("world"); console.log(result);//helloworld console.log(stringValue);//hello
slice(start,end)
end表示字符串到哪里结束。
如果传入的是负数,slice()方法会将传入的负值与字符串长度相加。
varstr="Hellohappyworld!"; console.log(str.slice(6));//happyworld! console.log(str.slice(6,11));//happy console.log(str.slice(-3));//ld! console.log(str.slice(3,-4));//lohappywo
substring(start,end)
如果传入的是负数,substring()会把所有字符参数都转换为0
varstr="Hellohappyworld!"; console.log(str.substring(6));//happyworld! console.log(str.substring(6,11));//happy console.log(str.substring(-3));//Hellohappyworld! console.log(str.substring(3,-4));//Hel
substr(start,length)
如果传入的是负数,substr()方法将负的第一个参数加上字符串的长度,而将负的第二个参数转换为0
varstr="Helloworld!"; console.log(str.substr(3));//loworld! console.log(str.substr(3,7));//loworl console.log(str.substr(-3));//ld! console.log(str.substr(3,-3));//空字符串
字符串位置方法
indexOf()lastIndexOf() varstringValue="helloworld"; console.log(stringValue.indexOf("o"));//4 console.log(stringValue.lastIndexOf("o"));//7
这两个方法都可以接收可选的第二个参数,表示从字符串中的哪个位置开始搜索。
varstringValue="helloworld"; console.log(stringValue.indexOf("o",6));//7 console.log(stringValue.lastIndexOf("o",6));//4
字符串的模式匹配方法
match()
vartext="cat,bat,sat,fat"; varpattern=/.at/; varmatches=text.match(pattern); console.log(matches.index);//0 console.log(matches[0]);//cat console.log(pattern.lastIndex);//0
search()
vartext="cat,bat,sat,fat"; varpos=text.search(/at/); console.log(pos);//1
replace()
vartext="cat,bat,sat,fat"; varresult=text.replace("at","ond"); console.log(result);//cond,bat,sat,fat varresult=text.replace(/at/g,"ond"); console.log(result);//cond,bond,sond,fond
Global对象
URI编码方法
Global对象的encodeURI()和encodeURIComponent()方法可以对URI(UniformResourcesIdentifiers,通用资源标识符)进行编码,以便发送给浏览器。
varurl="http://www.baidu.com/"; console.log(encodeURI(url)); console.log(encodeURIComponent(url)); encodeURI()和encodeURIComponent()方法对象的两个方法分别是decodeURI()和decodeURIComponent()
Math对象
random()方法
Math.random()方法返回介于0和1之间一个随机数,不包含0和1。对于某些站点来说,这个方法非常实用,因为可以利用它来随机显示一些名言和新闻事件。套用下面的公式,就可以利用Math.random()从某个整数范围内随机选择一个值。
值=Math.floor(Math.random()*可能值的总数+第一个可能的值)
例如:如果想选择一个1到10之间的数值,可以像下面这边编写代码:
varnum=Math.floor(Math.random()*10+1); functionselectFrom(lowerValue,upperValue){ varchoice=upperValue-lowerValue+1; returnMath.floor(Math.random()*choice+lowerValue); } varnum=selectFrom(2,10); console.log(num); varcolors=["red","green","blue","yellow","black","purple","brown"]; varcolor=colors[selectFrom(0,colors.length-1)]; console.log(color);