站内搜索

ECMAScript引用类型精讲

  引用类型通常叫做类(class),也就是说,遇到引用值时,所处理的就是对象。ECMAScript 实际上并没有传统意义上的类,只是通过定义对象来等同于其他语言中的类,鉴于大家对类甚是熟悉,姑且在文中还是以“类”来说明。

  var ob = new Object();

  以上定义了一个Object对象的实例,这种语法和Java比较类似。当有参数的时候需要括号来引用,当不存在参数时,括号可以去掉。由于 ECMAScript语言比较松散,不管

  是前面所属的基础语法,还是后面将提到的语法知识,我们都应该尽量按照一定的书写规范来约定自己的代码格式,而不应充分发挥语言松散的特点。

  Object类

  Object类和Java里的java.lang.Object类比较相似,它是ECMAScript中其他所有类的基类,它具有如下属性:

  constructor―建立对象的函数的一个引用,对于Object类而言,该引用指向本地Object()方法。

  prototype―对象里prototype对象的一个引用值。

  Object 类拥有的方法:

  hasOwnProperty(property)―判断property属性是否存在于对象中,property数据类型为string

  isPrototypeOf(object)― 判断一个对象是否是另一对象的 prototype

  propertyIsEnumerable(property)― 判断所给出的属性能否使用 for 语句列举出来

  toString()―返回对象的原始类型string

  valueOf()―返回对象合适的原始值,对于多数类而言,返回的值和toString()相同

  Object类的每一个属性和方法都被其他的类所重写

  Boolean类

  定义方法var ob = new Boolean(true); ob是Boolean原始数据类型的一个引用。在使用Boolean对象过程中,需要注意,所有的对象会自动转变为true,因此var ob1 = new Boolean(false); var ob2 = ob1 && true; 最后ob2的值是true,非false。一般情况下,使用Boolean原始数据类型可以避免这种情况。

  Number类

  定义方法var o = new Number(15);

  获得原始数据的值var n = o.valueOf();

  Number类有一些为数字类型的值特别设计的方法:

 

 

以下是引用片段:
    alert(o.toFixed( 2 )); // 输出15.00
  alert(o.toExponential( 1 )); // 输出1.5e+1
  在无法确定使用 toFixed 还是 toExponential 的时候,可以使用 toPrecision 方法来获得取值:

 

以下是引用片段:
  alert(o.toPrecision( 1 )); // 输出 2e+1
  alert(o.toPrecision( 2 )); // 输出 15
  alert(o.toPrecision( 3 )); // 输出 15.0
  String类

  String类是一种复杂引用类型,这里仅列出一些常见的方法,其中不少都是模仿java.lang.String:

  

以下是引用片段:
var s = new String( " Good Morning " );
  alert(s.valueOf() == s.toString()); // 输出true
  alert(s.length); // 输出12
  alert(s.charAt( 1 )); // 输出o
  var sr = s.concat( " ! " ); alert(sr); // 输出Good morning !
  alert(s.indexOf( " o " ); // 输出1
  alert(s.lastIndexOf( " o " ); // 输出6
  alert(s.localeCompare(Good morning)); // 输出0
  alert(s.localeCompare(Apple)); // 输出1
  alert(s.localeCompare(House)); // 输出-1
  alert(s.slice( 2 )); // 输出od morning
  alert(s.substring( 2 )); // 输出od morning
  alert(s.slice( 2 , - 5 )); // 输出od mo
  alert(s.substring( 2 , - 5 )); // 输出Go
  alert(s.toUpperCase()); // 输出GOOD MORNING
  alert(s.toLowerCase()); // 输出good morning
  另外,所有String类的方法同样可以用于String原始数据类型,因为它是伪对象。

  instanceof

  instanceof操作符和typeof作用类似,不同的是,instanceof需要明确指定对象是否属于某种特定类型。例如

以下是引用片段:
  var s = new String( " Good morning ! " );
  alert(s instanceof String);

  • 上一篇:ECMAScript引用类型应用
  • 下一篇:JavaScript运算符详解