JavaScript系列:ECMAScript引用类型

  引用类型通常叫作类(class),引用值所处理的为对象。对象是有new运算符加上要实例化的类的名字创建,当有不止一个参数时,ECMAScript要求使用括号,如果没有参数时,括号可以省略。

var o1 = new Object();
var o2 = new Object;

  尽管括号不是必须的,但为避免婚礼,最好使用括号。

 

1、Object类

  ECMAScript中的所有类都有Object类继承而来,Object类中的所有属性和方法都会出现在其他类中。

  Object类具有是属性

  ◊ Constructor —— 对创建对象的函数的引用(指针)。对于Object类,该指针指向原始的object()函数。

  ◊ Prototype —— 对该对象的对象原型的引用。

  Object类具有的方法:

  ◊ HasOwnProperty(property) —— 判断对象是否具有某个特定的属性。必须使用字符串指定该属性(例如:o.HasOwnProperty("name"))。

  ◊ IsPrototypeOf(object) —— 判断该对象是否为另一个对象的原型。

  ◊ PrototypeIsEnumerable(property) —— 判断给定的属性是否可以用于for..in语句进行枚举。

  ◊ ToString() —— 返回对象的原始字符串表示。对于Object类,ECMA-262没有定义这个值,所以不同的ECMAScript实现具有不同的值。

  ◊ ValueOf() —— 返回最适合该对象的原始值。对于许多类,该方法返回的值都与ToString()的返回值相同。

 

2、Boolean类

  Boolean类是Boolean原始类型的引用类型。要创建Boolean对象,只需要传递Boolean值作为参数:

var oBooleanObject = new Boolean(true);

  Boolean对象将重写Object类的ValueOf()方法,返回原始值,即true或false。重写ToString()方法,返回字符串"true"和"false"。

 

3、Number类

  Number类是Number原始类型的引用类型。创建Number对象代码如下:

var oNumberObject = new Number(55);

  使用valueOf()方法获取数字对象Number原始值:

var iNumber = oNumberObject.valueOf();

  Number类处理数值的专用方法:

  ◊ toFixed() —— 返回具有指定位数小数的数字的字符串表示。

var oNumberObject = new Number(99);
alert(oNumberObject.toFixed(2)); // outputs "99.00"

  toFixed()的方法参数说明应该显示的小数位数,空的小数由0补充。toFixed()方法能表示具有0到20位小数的数字,超出这个范围的值会引发错误。

  ◊ toExponential() —— 返回用科学记数法表示的数字字符串形式。

  ◊ toPrecision() —— 返回数字的预定形式或指数形式。

 

4、String类

  String类是String原始类型的对象表示法,创建String对象:

var oStringObject = new String('Hello World');

  String()对象的valueOf()和toString()方法都会返回String型的原始值:

alert(oStringObject.valueOf() == oStringObject.toString()); // outputs "true"

  String类属性:

  ◊ length,返回字符串中的字符个数;

var oStringObject = new String('Hello World');
alert(oStringObject.length); // outputs "11"

  String类方法:

  ◊ charAt() —— 返回包含指定位置处的字符的字符串; 第一个字符的位置是0,第二个字符的位置是1,依次类推。

var oStringObject = new String("Hello World");
alert(oStringObject.charAt(1)); // outputs "e"

  ◊ charCodeAt() —— 返回包含指定位置处的字符的字符代码; 第一个字符的位置是0,第二个字符的位置是1,依次类推。

var oStringObject = new String("Hello World");
alert(oStringObject.charCodeAt(1)); // outputs "101"

  ◊ concat() —— 用于把一个或多个字符串连接到String对象的原始值上,该方法返回的是String原始值,保持原始的String对象不变。

var oStringObject = new String("Hello ");
var sResult = oStringObject.concat("World");
alert(sResult);               // outputs "Hello World"
alert(oStringObject);         // outputs "Hello"

  ◊ indexOf() —— 从字符串开头开始检索指定的子串在另一个字符串中的位置。如果没有找到该子串,则返回-1。

  ◊ lastIndexOf() —— 从字符串结尾开始检索指定的子串在另一个字符串中的位置。如果没有找到该子串,则返回-1。

var oStringObject = new String("Hello World");
alert(oStringObject.indexOf("0"));      // outputs "4"
alert(oStringObject.lastIndexOf("0"));  // outputs "7"

  ◊ slice()substring() —— 两者均返回要处理的字符串的子串,都接受一个活两个参数。第一个参数是要获取的子串的起始位置,第二个参数是要获取子串终止前的位置。如果省略第二个参数,终止位默认为字符串的长度。

  slice()和substring()在参数为负数时,处理方式不同。对于负参数,slice()方法会用字符串的长度加上参数,substring()方法则将其作为0处理,即忽略负数。

  ◊ toLowerCase() —— 将字符串转化成全小写形式。

  ◊ toUpperCase() —— 将字符串转化成全大写形式。

 

5、instanceof运算符

  instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof方法要求开发者明确地确认对象为某种特定类型。

var oStringObject = new String('Hello World');
alert(oStringObject instanceof String); // outputs "true"

6、Array数组

  字符串、数值和布尔值都属于离散值,如果某个变量是离散的,那么在任意时刻及只能有一个值。如果想用一个变量来存储一组值,就需要使用数组array。

  在JavaScript脚本中,数组使用关键字Array来声明,同时还可以指定这个数组元素的个数,也就是数组的长度(length)。

var aTeam = new Array(12);

  在无法提前预知某个数组元素最终的个数时,声明数组时可以不指定具体个数。

var aColor = new Array();
aColor[0] = "red";
aColor[1] = "blue";
aColor[2] = "purple";

  每增加一个数组项,数组的长度就动态地增长。

  另外还可以直接用参数创建数组。

var aMap = new Array{"China","USA"};

  与字符串的length属性一样,数组也可以通过length属性来获取其长度,数组的位置也是从0开始的。

  除了Array()对象,数组还可以使用方括号"["和"]"来定义,项与项之间用逗号分隔。

var aColor = ["red", "gray"];

  对于数组而言,通常需要将其转化为字符串再进行使用,toString()方法可以很方便的实现这个功能。

alert(aColor.toString());

  如果不希望用逗号进行转换后的连接,而希望用指定的符号,可以用join()方法,该方法接受一个参数,即用来连接数组项的字符串。

var sColor = aColor.join("|");

 

posted @ 2012-09-24 23:51  libingql  阅读(475)  评论(0编辑  收藏  举报