基本包装类型
学习要点:
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.journeyalert(box.substring(2)); //.journey,对象.方法(参数),这种写法明显是引用类型的写法alert(typeof box); //stringalert(box.name); //undefinedalert(box.age); //错误2.new运算符写法
var box = new String('Mr.journey');box.name = 'journey';box.age = function (){ return 100;};alert(box); //Mr.journeyalert(box.substring(2)); //.journeyalert(typeof box); //objectalert(box.name); //journeyalert(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); //numberalert(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)); //Leealert(box.slice(4,6)); //Le,从第4位取到第6位alert(box.substring(4)); //Leealert(box.substring(4,6)); //Le,从第4位取到第6位alert(box.substr(4)); //Leealert(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')); //3alert(box.indexOf('L',5)); //10alert(box.lastIndexOf('L')); //10alert(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中的子串或nullreplace(pattern , replacement) 用replacement替换patternsearch(pattern) 返回字符串中pattern开始位置split(pattern) 返回字符串中按指定pattern拆分的数组正则表达式在字符串中的应用,在前面的正则表达式章节已经详细探讨过.
以上中match()、replace()、search()、split()在普通字符串中也可以使用。var box = 'Mr.Lee is Lee';
alert(box.match('L')); //找到L,返回L,否则返回nullalert(box.replace('L','Q')); //找到L并且替换成Qalert(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")); //超链接