11.基本包装类型

基本包装类型
 
学习要点:
1.基本包装类型概述
2.Boolean类型
3.Number类型
4.String类型
 
 
为了便于操作基本类型值,ECMAScript提供了3中特殊的引用类型:Boolean、Number和String,这些类型与其
它引用类型相似,但同时也具有与各自基本类型相应的特殊行为,实际上,每当读取一个基本类型值的时候,后台
就会创建一个对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。
 
一、基本包装类型概述
 
var box = 'Mr.journey'; //定义一个字符串
var box2 = box.substring(2); //截掉字符串前两位
alert(box2); //输出新字符串
 
变量box是一个字符串类型,而box.substring(2)又说明它是一个对象(PS:只有对象才会调用方法),最后把处
理结果赋给box2。“Mr.journey”是一个字符串类型的值,按道理它不应该是对象,不应该会有自己的方法,比如:
alert('Mr.journey(2)'); //直接通过值来调用方法
 
1.字面量写法
var box = 'Mr.journey'; //字面量
box.name = 'journey'; //无效属性
box.age = function (){ //无效方法
return 100;
};
alert(box); //Mr.journey
alert(box.substring(2)); //.journey,对象.方法(参数),这种写法明显是引用类型的写法
alert(typeof box); //string
alert(box.name); //undefined
alert(box.age); //错误
 
2.new运算符写法
var box = new String('Mr.journey');
box.name = 'journey';
box.age = function (){
return 100;
};
alert(box); //Mr.journey
alert(box.substring(2)); //.journey
alert(typeof box); //object
alert(box.name); //journey
alert(box.age); //100
 
以上字面量声明和new运算符声明很好的展示了它们之间的区别。但有一定还是可以肯定的,那就是不管字面量
形式还是new运算符形式,都可以使用它的内置方法。并且Boolean和Number特性与String相同,三种类型可
以成为基本包装类型。
 
PS:在使用new运算符创建以上三种类型的对象时,可以给自己添加属性和方法,但我们建议不要这样使用,
因为这样会导致根本分不清到底是基本类型值还是引用类型值。
 
二、Boolean类型
 
Boolean类型没有特定的属性和方法。
 
三、Number类型
 
Number类型有一些静态属性(直接通过Number调用的属性,而无须new运算符)和方法。
 
Number静态属性
属性 描述
MAX_VALUE 表示最大值
MIN_VALUE 表示最小值
NaN 非数值
NEGATIVE_INFINITY         负无穷大,溢出返回该值
POSITIVE_INFINITY         无穷大,移除返回该值
prototype 原型,用于增加新属性和方法
 
 
var box = 100;
alert(box.MAX_VALUE); //这种写法叫做属性
alert(Number.MAX_VALUE); //这种写法叫做静态属性(类型.属性)
 
 
 
Number对象的方法
方法(参数) 描述
toString() 将数值转化为字符串,并且可以转换进制
toLocaleString() 根据本地数字格式转换为字符串
toFixed() 将数字保留小数点后指定位数并转化为字符串
toExponential() 将数字以指数形式表示,保留小数点后指定位数并转化为字符串
toPrecision() 指数形式或点形式表述数,保留小数点后面指定位数并转化为字符串
 
 
var box = 1000.784;
alert(box);
alert(typeof box); //number
alert(typeof box.toString()); //string,toString()把数值转换为字符串
alert(box.toLocaleString()); //本地化
alert(box.toFixed(2)); //小数点保留两位,并转换字符串,四舍五入
alert(box.toExponential());         //以指数形式,转换字符串
alert(box.toPrecision(2)); //根据传参来决定指数或者点数
 
 
 
三、String类型
 
String类型包含了三个属性和大量的可用内置方法。
 
String对象属性
属性 描述
length 返回字符串的字符长度
constructor         返回创建String对象的函数
prototype 通过添加属性和方法扩展字符串定义
 
String也包含对象的通用方法,比如valueOf()、toLocalString()和toString()方法,但这些方法都返回字符串的
基本值。
 
 
字符方法
方法 描述
charAt(n) 返回指定索引位置的字符串
charCodeAt(n) 以Unicode编码形式返回指定索引位置的字符
 
var box = 'Mr . journey';
alert(box.charAt(1)); //r,返回指定索引下标的值
alert(box.charCodeAt(1)); //114,返回的是acssii码
alert(box[1]); //r,通过数组方式截取
 
 
PS:box[1]在IE浏览器会显示undefined,所以使用时要慎重
 
 
字符串操作方法
方法 描述
concat(str1.....str2)     将字符串参数串联到调用该方法的字符串
slice(n,m)     返回字符串n到m之间位置的字符串
substring(n,m)     同上
substr(n,m)             返回字符串n开始的m个字符串
 
var box = 'Mr. Lee';
alert(box.concat('is' ,'Teacher' , '!')); //Mr. Lee  is Teacher !
alert(box.slice(4)); //Lee
alert(box.slice(4,6)); //Le,从第4位取到第6位
alert(box.substring(4)); //Lee
alert(box.substring(4,6)); //Le,从第4位取到第6位
alert(box.substr(4)); //Lee
alert(box.substr(4,2)); //Le,从第4个开始选两个
 
 
var box = 'Mr.Lee';
alert(box.slice(-3)); //Lee,6+(-3)=3位开始
alert(box.substring(-3)); //Mr.Lee,负数返回全部
alert(box.substr(-3)); //Lee,6+(-3)=3位开始
 
var box = 'Mr.Lee';
alert(box.slice(3,-1)); //Le,6+(-1)=5,(3,5)
alert(box.substring(3,-1)); //Mr.第二参数位负,直接转为0,(0,3)
alert(box.substr(3,-1)); //'',第二个参数为负数,直接转为0,(3,0)
 
PS:IE在JavaScript实现在处理向substr()方法传递负值的情况下存在问题,他会返回原始字符串,使用时要慎重
 
 
 
字符串位置方法
方法 描述
indexOf(str,n) 从第n个搜索的第一个str,并将搜索的索引值返回
lastIndexOf(str,n) 从n开始搜索的最后一个str,并将搜索的索引值返回
 
var box = 'Mr.Lee is Lee';
alert(box.indexOf('L')); //3
alert(box.indexOf('L',5)); //10
alert(box.lastIndexOf('L')); //10
alert(box.lastIndexOf('L',5));         //3,从指定的位置向前搜索,
 
PS:如果没有找到想要的字符,则返回-1。
 
示例:找出全部的L
var box = 'Mr.Lee is Lee'; //包含两个L的字符串
var boxarr=[]; //存放L位置的数组
var pos = box.indexOf('L');         //先获取第一个L的位置
while(pos>-1){ //如果位置大于-1,说明还存在L
boxarr.push(pos); //添加到数组
pos = box.indexOf('L' , pos+1);                 //从新赋值pos目前的位置
}
alert(boxarr);
 
大小写转换方法
方法 描述
toLowerCase(str) 将字符串全部抓为小写
toUpperCase(str) 将字符串全部转为大写
toLocaleLowerCase(str)                 将字符串全部转为小写,并且本地化
toLocaleUpperCase 将字符串全部转为大写,并且本地化
 
 
var box = 'Mr.Lee is Lee';
alert(box.toLowerCase()); //全部转为小写
alert(box.toUpperCase()); //转为大写
alert(box.toLocaleLowerCase());                 //
alert(box.toLocaleUpperCase());                  //
 
 
 
PS:只有几种语言(如土耳其语)具有地方特有的大小写本地性,一般来说,是否本地化效果都是一致的。
 
字符串的模式匹配方法
方法 描述
match(pattern) 返回pattern中的子串或null
replace(pattern , replacement)                         用replacement替换pattern
search(pattern) 返回字符串中pattern开始位置
split(pattern)         返回字符串中按指定pattern拆分的数组
 
正则表达式在字符串中的应用,在前面的正则表达式章节已经详细探讨过.
以上中match()、replace()、search()、split()在普通字符串中也可以使用。
 
var box = 'Mr.Lee is Lee';
alert(box.match('L')); //找到L,返回L,否则返回null
alert(box.replace('L','Q'));         //找到L并且替换成Q
alert(box.search('L'));         //找到L的位置
alert(box.split('')); //以空格分割成字符串
 
 
其他方法
方法 描述
fromCharCode(ascii) 静态方法,输出Ascii码对应值
localeCompare(str1 , str2)                 比较两个字符串,并返回相应的值
 
 
alert(String.fromCharCode(76)); //L,输出Ascii码对应值,放一个ascii码
 
 
localeCompare(str1 , str2)方法详解:比较两个字符串并返回以下值中的一个:
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数。(多数-1)
2.如果字符串等于字符串参数,则返回0.
3.如果字符串在自附表中应该排在字符串参数之后,则返回一个正数。(多数1)
 
 
HTML方法
 
方法 描述
anchor(name) <a name="name">str</a>
big() <big>str</big>
blink() <blink></blink>
bold() <b>str</b>
fixed() <tt>str</tt>
fontcolor(color) <font color="color">str</font>
fontsize(size) <font size="size">str</font>
link(URL) <a href="URL">str</a>
smail() <smail>str</smail>
strike() <strike>str</strike>
italics() <i>italics</i>
sub() <sub>str<sub>
sup() <sup>str</sup>
 
以上是通过JS生成一个html标签,根据经验,没有什么太大用处,做个了解。
 
var box = '百度';
alert(box.link("http://www.baidu.com")); //超链接
posted @ 2018-01-10 22:18  journeyIT  阅读(9)  评论(0编辑  收藏  举报