基本包装类型

为了便于操作基本类型值,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());

 

posted @ 2018-11-27 14:21  WhiteSpace  阅读(930)  评论(0编辑  收藏  举报