基本包装类型
为了便于操作基本类型值,ECMAScript还提供了3个特殊的引用类型:Boolean,Number和String.这些类型与其他引用类型相似,但同时也具有各自的基本类型相应的特殊行为。
1.基本包装类型概念与Bollean,Number类型
(1)每当读取一个基本类型值的时候,后台就会自动创建一个对应的基本包装类型的对象。而且,此对象只存在于一行代码的执行瞬间,然后立即被销毁。
(2)把字符串,数字,布尔值传给构造函数会得到对应的实例。对基本包装类型的实例调用typeof会返回“object”。要注意,使用new操作符调用基本类型的构造函数,与直接调用同名的转型函数是不一样的。
(3)Boolean类型:需要注意的是,使用构造函数创建布尔的对象进行布尔运算时,对象都会被转换为true。
(4)Number类型:toString()将数字转换成字符串,接收一个参数,告诉它返回几进制 toFixed()会按照指定的小数位返回数值的字符串表示,并且会自动舍入
toExponential()返回以指数表示法表示的字符串形式,参数决定小数位 toPrecision()自动调用适合的方法
1 /*var s1="some text"; 2 var s2=s1.substring(2); //基本包装类型也有方法 3 4 var s1=new String("some text"); 5 var s2=s1.substring(2); 6 s1=null; //可以这样理解为什么基本类型会有方法 7 s1.color="red"; 8 alert(s1.color); //自动创建的基本包装类型对象只存在于代码创建的一瞬间,undefined*/ 9 10 var value="25"; 11 var number=Number(value); 12 alert(typeof number); //number 13 var obj=new Number(value); 14 alert(typeof obj); //object 15 /*把字符串,数字,布尔值传给构造函数就会创建相应的实例,对基本包装类型的实例调用typeof会返回object*/ 16 17 /*Boolean类型*/ 18 var falseObject=new Boolean(false); 19 var result=falseObject&&true; 20 alert(result); //true 21 var falseValue=false; 22 result=falseValue&&true; 23 alert(result); //false 24 25 /*Number类型*/ 26 var num=10; 27 alert(num.toString());//"10" 28 alert(num.toString(2));//"1010" 29 alert(num.toString(8));//"12" 30 31 alert(num.toFixed(2));//10.00此方法还会四舍五入 32 33 var num=99; 34 alert(num.toPrecision(1));//"1e+2" 35 alert(num.toPrecision(2));//"99" 36 alert(num.toPrecision(3));//"99.0"
2.基本包装类型--String类型
(1)字符方法:charAt()返回对应参数位置的字符 charCodeAt()返回对应字符的编码 ECMAScript5支持使用方括号来访问字符串中的特定字符
(2)字符串操作方法:concat()与Array的一样,往字符串后添加多个字符串
slice():接收两个参数,第一个参数指定开始位置,第二个参数指定到哪里结束,当参数有负数时,此方法会将传入的负数与字符串的长度相加
substring():接收两个参数,第一个参数指定从哪里开始,第二个参数指定从哪里结束。当有负数时,此方法会把所有的负数都变成0,另外substring(3,0)==substring(0,3)
substr():接收两个参数,第一个指定从哪里开始,第二个参数指定返回的字符串的个数。当有负数时,此方法会负的第一个参数加上字符串的长度
(3)位置方法indexOf()和lastIndexOf(),利用这两种位置方法,可以找到所有匹配的字符,并返回位置
(4)trim():删除字符串前后的所有空格
(5)大小写转换toLowerCase()和toUpperCase()
(6)match()与replace()方法都与正则表达式联合起来使用,match()联合正则,将匹配到的字符转换成数组返回。replace()顾名思义,替换匹配到字符。
(7)localeCompare()比较俩个字符串
(8)fromCharCode()接收多个字符编码,然后将它们转换成字符串
1 var stringValue="hello world"; 2 alert(stringValue.charAt(1)); //"e"相应位置的字符 3 4 alert(stringValue.charCodeAt(1));//"101"字符的编码 5 6 var stringValue="hello "; 7 var result=stringValue.concat("world"); 8 alert(result); //"hello world" 与数组的concat方法一样 9 10 /*利用两种位置方法,找到所有匹配的字符,并返回位置*/ 11 var stringValue="Lorem ipsum dolor sit amet,consectetur adipisicing elit"; 12 var positions=new Array(); 13 var pos=stringValue.indexOf("e"); 14 while(pos>-1){ 15 positions.push(pos); 16 pos=stringValue.indexOf("e",pos+1);}; 17 alert(positions); //"3,24,32,35,52" 18 19 var text="cat,bat,sat,fat"; 20 var pattern=/.at/; 21 var matchs=text.match(pattern); 22 alert(matchs.index);//0 23 alert(matchs[0]);//"cat" 24 alert(matchs.lastIndex);//0 25 26 var pos=text.search(/at/); 27 alert(pos);//1 28 29 var result=text.replace("at","ond"); 30 alert(result);//"cond,bat,sat,fat" 31 result=text.replace(/at/g,"ond"); 32 alert(result);//"cond,bond,sond,fond" 33 34 result=text.replace(/(.at)/g,"word($1)"); 35 alert(result);//word(cat),word(bat),word(sat),word(fat)