基本包装类型
为了便于操作基本类型值,ECMAscript提供了3个特殊的引用类型,Boolean Number String ,这些类型与其他引用类型相似,但同时也具有各自的基本类型相应的
特殊行为,实际上,每当读取一个基本类型值的时候,后台就会创建对应的基本包装类型的对象,从而能够调用一些方法来操作这些数据。
基本包装类型概述
var box="Lee"; // 定义一个字符串 var box2=box.substring(2); //截掉字符串前两位赋值给box2 alert(box2); //输出新字符串
//是基本类型,但又是特殊的引用类型(基本包装类型),它可以调用系统内置的函数
变量box是一个字符串类型,而box.subString(2); 又说明它是一个对象(ps:只有对象才会调用方法),最后把处理结果赋值给box2, “Lee”是一个字符串类型的值
按道理它不应该是对象,不应该会又自己的方法 比如:
alert("Mr.Lee".substring(2)); //这样也是可以的
var box="leee"; //无效 box.name="杜伟"; //无效属性 box.age=function(){ //无效函数 return 100; } alert(box); //leee
alert(box.sunsteing(1)); //eee
alert(box.name); //undefinde alert(box.age()); //错误
var box =new String("leee"); //有效 box.name="杜伟"; //有效属性 box.age=function(){ //有效方法 return 100; } alert(box.name); //杜伟
alert(box.name.substring(1)); //伟
alert(box.age()); //100
以上字面量声明和new运算符声明很好的展示了他们之间的区别。但有一定还是可以肯定的,那就是不管字面量形式还是使用new运算符形式,都可以使用它的内置方法。并且Boolean和NUmber特性与String相同,三种类型可以成为基本包装类型。
ps:在使用new运算创建以上三种类型(Boolean、Number和String)的对象时,可以给自己添加属性和方法,但我们建议不要这样做,因为这样会导致根本分不清到底是基本类型值还是引用类型值。
Boolean 类型
Boolean类型没有特定的属性和方法。
Number 类型
Number类型有一些静态属性(直接通过Number调用的属性,而需new运算符)和方法
number静态属性
MAX_VALUE 表示最大数
MIN_VALUE 表示最小值
NaN 非数值
NEGATIVE_INFINITY 负无穷大,溢出返回该值
POSITIVE_INFINITY 无穷大,溢出返回该值
prototype 原型,用于增加新属性和方法
Number对象的方法
toString() 将数值转化为字符串,并且可以转换进制
toLocaleString() 根据本地数字格式转换为字符串
toFixed() 将数字保留小数点后制定位数并转换为字符串
toExponential() 将数字以指数形式表示,保留小数点后指定位数并转换化为字符串
toPrecision() 指数形式或点数形式表示,保留小数点后面指定位数并转化字符串
var box=100; alert(box.MAX_VALUE); //无效 这种写法叫做属性 alert(Number.MAX_VALUE); //有效 这种写法叫做静态属性
String类型
String类型包含了三个属性和大量的可用内置方法。
String对象属性
length 返回字符串的字符长度
constructor 返回创建String对象的函数
prototype 通过添加属性和方法扩展字符串定义
String也包含对象的通用方法,比如 valueOf()、toLocaleString()和toString()方法,但这些方法都返回字符串的基本值。
String方法
charAt(n) 返回指定索引位置的字符
charCodeAt(n) 以Unicode编码形式返回指定索引位置的字符
concat(str1....str2) 将字符串参数串联到调用该方法的字符串
slice(n,m) 返回字符串n到m之间位置的字符串
substring(n,m) 同上
substr(n,m) 返回字符串n开始的m字符串
var box='Mr.weidu'; alert(box.length); //返回8 alert(box.constructor); //返回构造方法 alert(box.charAt(6)); //返回字符串第6个字符 d alert(box.charCodeAt(6)); //以unicodde形式返回字符串第6个字符的编码 100 alert(box[3]); //数组形式返回 在IE浏览器使用会显示Undefined,谨慎使用
var box="Mr.duwei"; alert(box.slice(2,4)); //返回.d alert(box.concat("杜伟","楼下")); //返回Mr.duwei杜伟楼下 alert(box.substring(2,4)); //返回.d alert(box.substr(2,4)); //返回索引值2开始 后4位的字符 .duw //返回Mr.lee 是负数的话 返回全部字符串
var box="Mr.lee"; alert(box.slice(-2)); //返回ee 首先计算字符串长度+-2 6+(-2)=4 alert(box.substring(-2)); //返回Mr.lee 是负数的话 返回全部字符串 alert(box.substr(-2)); //ee 和slice一样 alert(box.slice(2,-1)); //返回.le 6+(-1)=5 slice(2,5)
PS:IE的javascript实现在处理向substr()方法传递负值的情况下存在问题,它会返回原始字符窜,使用时要切记
字符串位置方法
indexOf(str,n) 从n开始搜索的第一个str,并将搜索的索引返回
lastIndexOf(str,n) 从n开始搜索的最后一个str,并将搜索的索引值返回
ps:如果没有找到字符串,返回-1
var box="Mr.leelee"; alert(box.indexOf("l")); //返回3 返回从初始位置搜索l第一次出现的位置 不写参数返回-1 alert(box.indexOf('l',4)) //返回6 从第4个位置开始搜索l第一次出现的位置 alert(box.lastIndexOf('l')); //返回6 返回从末尾开始搜索l 第一次出现的位置 alert(box.lastIndexOf('l',1)); //返回-1 从第一个位置开始搜索l,向前出现的位置 没有 返回-1
var box="Mr.leeisleid"; var che=[]; //定义数组 存储索引集合 var p=box.indexOf("l"); //p保存第一个l位置的索引 while(p>-1){ //循环大于-1 说明找到了 che.push(p); //将找到的索引存储到数组中 p=box.indexOf("l",p+1) //重新确定p的位置 }
alert(che); //输出显示 for(i=0;i<=che.length+1;i++){ //使用for循环输出也是可以的 alert(che[i]); }
大小写转换方法
toLowerCase(str) 将字符串全部转换为小写
toUpperCase(str) 将字符串全部转换为大写
toLocaleLowerCase(str) 将字符串全部转换为小写,并且本地化
toLocaleUpperCase(str) 将字符串全部转换为大写,并且本地化
var box="Mr.leeisLast"; alert(box.toUpperCase()); alert(box.toLowerCase()); alert(box.toLocaleUpperCase()); alert(box.toLocaleLowerCase());
ps:只有几种语言,(如土耳其语)具有地方特有的大小写本地性,一般来说,是否本地化效果都是一样的
字符窜的模式匹配方法
match(parrtern) 返回pattern中的字串或null
replace(pattern,replacement) 用replacement替换pattern
search(pattern) 返回字符串pattern开始位置
split(pattern) 返回字符串按指定pattern拆分的数组
正则表达式在字符串中的应用,在前面的张姐已经详细探讨过,这里就不再讲述了,以上中match()、replace()、
search()、split()在普通字符串中也可以使用。
var box="lee"; alert(box.match("l")); //返回匹配中的字符串 l alert(box.replace("l","z")); //返回替换后的字符串 z替换l zee alert(box.search("l")); //返回搜寻字串的开始位置 0 alert(box.split("e")); //返回l,, 拆分e 保留剩下字符存在数组中 var c=box.split("e"); alert(c[0]) //是数组
其他方法
fromCharCode(ascii) 静态方法
localeCompare(str1,str2) 比较两个字符串,并返回相应的值
localeCompare方法详解,比较两个字符串并返回一下值中的一个
1.如果字符串在字母表中应该排在字符串参数之前,则返回一个负数(多数-1)
2.如果字符串等于字符串参数,则返回0
3.如果字符串在自附表中应该排在字符串参数之后,则返回一个正数(多数为1)
var box="ne"; alert(String.fromCharCode(76)); //参数中必须是ascii码 返回L alert(box.localeCompare("Le")); //返回1 说明参数比字符串靠前
HTML方法
anchor(name) <a name=“name”>str</a>
big() <big>str</big>
blink() <blink>str</blink>
blod() <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>
small() <small>str</small>
strike() <strike>str</strike>
italics() <i>str</i>
sub() <sub>str</sub>
sup() <sup>str</sup>
以上是通过js生成html标签,根据经验,没什么太大用处,做个了解
var box="lee"; alert(box.link("http://www.baidu.com"));
var box="lee"; alert(box.link("http://www.baidu.com")); alert(box.bold());