JavaScript从入门到精通(微视频精编版)
上QQ阅读APP看书,第一时间看更新

8.2 String对象的属性

视频讲解

在String对象中有3个属性,分别是length、constructor和prototype。下面对这几个属性进行详细介绍。

8.2.1 length属性

length属性用于获得当前字符串的长度。该字符串的长度为字符串中所有字符的个数,而不是字节数(一个英文字符占一个字节,一个中文字符占两个字节)。

语法如下:

    stringObject.length

参数说明。

stringObject:当前获取长度的String对象名,也可以是字符变量名。

说明

通过length属性返回的字符串长度包括字符串中的空格。

例如,获取已创建的字符串对象newString的长度。代码如下:

    01  var newString=new String("abcdefg");  //创建字符串对象
    02  var p=newString.length;               //获取字符串对象的长度
    03  alert(p);                             //输出字符串对象的长度

运行结果为:

    7

例如,获取自定义的字符变量newStr的长度。代码如下:

    01  var newStr="abcdefg";  //定义一个字符串变量
    02  var p=newStr.length;   //获取字符串变量的长度
    03  alert(p);              //输出字符串变量的长度

运行结果为:

    7

【例8.01】金庸先生的武侠小说深受广大武侠迷们的喜爱,在小说中无论是正面人物还是反面人物都很有特色。现提取小说中的一些主要人物,如张无忌、郭靖、东方不败、乔峰、令狐冲、完颜洪烈、杨过、金轮法王、韦小宝。

将以上人物按名称的字数进行分类,并将分类结果输出在页面中。代码如下:(实例位置:资源包\源码\08\8.01)

    01  //定义人物数组
    02  var arr=new Array("张无忌","郭靖","东方不败","乔峰","令狐冲","完颜洪烈","杨过","金轮法王",
                         "韦小宝");
    03  var twoname="";                                     //初始化二字人物变量
    04  var threename="";                                   //初始化三字人物变量
    05  var fourname="";                                    //初始化四字人物变量
    06  for(var i=0; i<arr.length; i++){
    07     if(arr[i].length==2){                            //如果人物名称长度为2
    08        twoname+=arr[i]+" ";                          //将人物名称连接在一起
    09     }
    10     if(arr[i].length==3){                            //如果人物名称长度为3
    11        threename+=arr[i]+" ";                        //将人物名称连接在一起
    12     }
    13     if(arr[i].length==4){                            //如果人物名称长度为4
    14        fourname+=arr[i]+" ";                         //将人物名称连接在一起
    15     }
    16  }
    17  document.write("二字人物:"+twoname);               //输出二字人物
    18  document.write("<br>三字人物:"+threename);         //输出三字人物
    19  document.write("<br>四字人物:"+fourname);          //输出四字人物

运行程序,结果如图8.1所示。

图8.1 为金庸小说人物名称按字数分类

8.2.2 constructor属性

constructor属性用于对当前对象的构造函数的引用。

语法如下:

    stringObject.constructor

参数说明。

stringObject:String对象名或字符变量名。

例如,使用constructor属性判断当前对象的类型。代码如下:

    01  var newStr=new String("One World One Dream");  //创建字符串对象
    02  if (newStr.constructor==String){                 //判断当前对象是否为字符串对象
    03      alert("这是一个字符串对象");                //输出字符串
    04  }

运行结果如图8.2所示。

图8.2 输出对象的类型

说明

以上例子中的newStr对象,可以用字符串变量代替。constructor属性是一个公共属性,在Array、Date、Boolean和Number对象中都可以调用该属性,用法与String对象相同。

8.2.3 prototype属性

prototype属性可以为字符串对象添加自定义的属性或方法。

语法如下:

    String.prototype.name=value

参数说明。

 name:要添加的属性名或方法名。

 value:添加属性的值或执行方法的函数。

例如,给String对象添加一个自定义方法getLength,通过该方法获取字符串的长度。代码如下:

    01  String.prototype.getLength=function(){  //定义添加的方法
    02      alert(this.length);                 //输出字符串长度
    03  }
    04  var str=new String("abcdefg");          //创建字符串对象
    05  str.getLength();                        //调用添加的方法

运行结果如图8.3所示。

图8.3 输出字符串的长度

说明

prototype属性也是一个公共属性,在Array、Date、Boolean和Number对象中都可以调用该属性,用法与String对象相同。