基本包装类型
为了便于操作基本类型值,ECMAScript还提供了3个特殊的引用类型:Boolean,Number和String.这些类型与其他引用类型相似,但同时也具有各自的基本类型相应的特殊行为。
1.基本包装类型概念与Bollean,Number类型
(1)每当读取一个基本类型值的时候,后台就会自动创建一个对应的基本包装类型的对象。而且,此对象只存在于一行代码的执行瞬间,然后立即被销毁。
(2)把字符串,数字,布尔值传给构造函数会得到对应的实例。对基本包装类型的实例调用typeof会返回“object”。要注意,使用new操作符调用基本类型的构造函数,与直接调用同名的转型函数是不一样的。
(3)Boolean类型:需要注意的是,使用构造函数创建布尔的对象进行布尔运算时,对象都会被转换为true。
(4)Number类型:toString()将数字转换成字符串,接收一个参数,告诉它返回几进制 toFixed()会按照指定的小数位返回数值的字符串表示,并且会自动舍入
toExponential()返回以指数表示法表示的字符串形式,参数决定小数位 toPrecision()自动调用适合的方法
/*var s1="some text";
var s2=s1.substring(2); //基本包装类型也有方法
var s1=new String("some text");
var s2=s1.substring(2);
s1=null; //可以这样理解为什么基本类型会有方法
s1.color="red";
alert(s1.color); //自动创建的基本包装类型对象只存在于代码创建的一瞬间,undefined*/
var value="25";
var number=Number(value);
alert(typeof number); //number
var obj=new Number(value);
alert(typeof obj); //object
/*把字符串,数字,布尔值传给构造函数就会创建相应的实例,对基本包装类型的实例调用typeof会返回object*/
/*Boolean类型*/
var falseObject=new Boolean(false);
var result=falseObject&&true;
alert(result); //true
var falseValue=false;
result=falseValue&&true;
alert(result); //false
/*Number类型*/
var num=10;
alert(num.toString());//"10"
alert(num.toString(2));//"1010"
alert(num.toString(8));//"12"
alert(num.toFixed(2));//10.00此方法还会四舍五入
var num=99;
alert(num.toPrecision(1));//"1e+2"
alert(num.toPrecision(2));//"99"
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()接收多个字符编码,然后将它们转换成字符串
var stringValue="hello world";
alert(stringValue.charAt(1)); //"e"相应位置的字符
alert(stringValue.charCodeAt(1));//"101"字符的编码
var stringValue="hello ";
var result=stringValue.concat("world");
alert(result); //"hello world" 与数组的concat方法一样
/*利用两种位置方法,找到所有匹配的字符,并返回位置*/
var stringValue="Lorem ipsum dolor sit amet,consectetur adipisicing elit";
var positions=new Array();
var pos=stringValue.indexOf("e");
while(pos>-1){
positions.push(pos);
pos=stringValue.indexOf("e",pos+1);};
alert(positions); //"3,24,32,35,52"
var text="cat,bat,sat,fat";
var pattern=/.at/;
var matchs=text.match(pattern);
alert(matchs.index);//0
alert(matchs[0]);//"cat"
alert(matchs.lastIndex);//0
var pos=text.search(/at/);
alert(pos);//1
var result=text.replace("at","ond");
alert(result);//"cond,bat,sat,fat"
result=text.replace(/at/g,"ond");
alert(result);//"cond,bond,sond,fond"
result=text.replace(/(.at)/g,"word($1)");
alert(result);//word(cat),word(bat),word(sat),word(fat)