`

4、引用类型(本地对象)

阅读更多

创建对象

象是由 new 运算符加上要实例化的对象的名字创建的:

var o = new Object();

 

如果没有参数,括号可以省略:

var o = new Object;

 

也可用下面方式创建一个对象 :

var o = {};  

由下面代码可知,上述创建出的都是objet对象:

var o1 = {}; var o2 = new Object(); alert (o.construct == o1.construct)//true

Object 对象

ECMAScript 中的所有对象都由这个对象继承而来,Object 对象中的所有属性和方法都会出现在其他对象中 。 Object 对象具有下列属性:

constructor  创建对象的函数的引用(方法指针) 。对于 Object 对象,该指针指向原始的 Object() 函数。
Prototype    对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例

Object 对象还具有几个方法:
hasOwnProperty(property) 判断某对象是否有某个特定的属性。必须用字符串指定该属性。例如,o.hasOwnProperty("name")
isPrototypeOf(object) 判断该对象是否为另一个对象的原型。
propertyIsEnumerable 判断给定的属性是否可以用 for...in 语句进行枚举。
toString() 返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的 值。
valueOf()  返回最适合
该对象的原始值。对于许多对象,该方法返回的值都与 toString() 的返回值相同。

注释:上面列出的每种属性和方法都可以被其他对象覆盖。

Boolean 对象

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

var oBooleanObject = new Boolean(true); 

Boolean 对象将覆盖 Object 对象的 valueOf() 方法,返回原始值,即 true 和 false。toString() 方法也会被覆
盖,返回字符串 "true" 或 "false"。

Number 对象

Number 对象是 Number 原始类型的引用类型。要创建 Number 对象,采用下列代码:

var oNumberObject = new Number(68); 

 
所有特殊值都是 Number 对象的静态属性,包括以下五个静态属性:
MAX_VALUE              可表示的最大的数。
MIN_VALUE               可表示的最小的数。
NaN                          非数字值。
NEGATIVE_INFINITY  负无穷大,溢出时返回该值。
POSITIVE_INFINITY   正无穷大,溢出时返回该值。


要得到数字对象的 Number 原始值,只需要使用 valueOf() 方法:

var iNumber = oNumberObject.valueOf(); 

 

当然,Number 类也有 toString() 方法,在《JavaScript学习笔记(三) —— 类型转换 》小节中已经详细讨论过该方法。
除了从 Object 对象继承的标准方法外,Number 对象还有几个处理数值的专用方法。

toFixed()

toFixed() 方法返回的是具有指定位数小数的数字的字符串表示 。例如:

var oNumberObject = new Number(68); 
alert(oNumberObject.toFixed(2));  //输出 "68.00" 
oNumberObject = new Number(68.123); 
alert(oNumberObject.toFixed(2));  //输出 "68.12" 
oNumberObject = new Number(68.523); 
alert(oNumberObject.toFixed(0));  //输出 "69",截断是四舍五入 

 
注:toFixed() 方法能表示具有 0 到 20 位小数的数字 ,超过这个范围的值会引发错误:

alert(oNumberObject.toFixed(21));  //运行出错 

toExponential()

返回的是用科学计数法表示的数字的字符串形式 。toExponential() 方法也有一个参数,指定要输出的小数的位数。
例如:

var oNumberObject = new Number(68); 
alert(oNumberObject.toExponential(1));  //输出 "6.8e+1" 

toPrecision()

toPrecision() 方法根据最有意义的形式来返回数字的预定形式或指数形式 。它有一个参数,即用于表示数的数字总
数(不包括指数)
。例如:

var oNumberObject = new Number(68); 
alert(oNumberObject.toPrecision(1));  //输出 "7e+1"=70 

 
toPrecision() 方法会对数进行舍入 。不过,如果用 2 位数字表示 68:

var oNumberObject = new Number(68); 
alert(oNumberObject.toPrecision(2));  //输出 "68" 

 
如果指定的位数多于需要的位数:

var oNumberObject = new Number(68); 
alert(oNumberObject.toPrecision(3));  //输出 "68.0",补零 

 
toFixed()、toExponential() 和 toPrecision() 方法都会进行舍入操作 ,以便用正确的小数位数正确地表示一个数。
提示: 应该少用Boolean 、Number 对象,以避免潜在的问题。只要可能,都使用数字的原始表示法

String 对象

String 对象是 String 原始类型的对象表示法。除了constructor、prototype属性外,还有一个length属性,这
这主不多介绍了,下面主要介绍一下它的相关方法。

valueOf() 、toString()  

方法都会返回 String 类型的原始值

var oStringObject = new String("hello world"); 
alert(oStringObject.valueOf() == oStringObject.toString()); //输出 "true" 

charAt() 、charCodeAt()

charAt() 方法返回的是包含指定位置处的字符的字符串:

var oStringObject = new String("hello world"); 
alert(oStringObject.charAt(1)); //输出 "e" 

 

charCodeAt() 返回字符的unicode码:

oStringObject = new String("江"); 
alert(oStringObject.charCodeAt(0)); //输出 "27743" 

concat()

把一个或多个字符串连接到 String 对象的原始值上。该方法返回的是 String 原始值,保持原始的 String 对象不变
与用加号(+)连接字符串是一样的:

var oStringObject = new String("hello "); 
var sResult = oStringObject.concat("world"); 
alert(sResult); //输出 "hello world" 
alert(oStringObject); //输出 "hello " 

indexOf() 、lastIndexOf()

返回的都是指定的子串在另一个字符串中的位置,如果没有找不到子串,则返回 -1。
indexOf() 方法是从字符串的开头(位置 0)开始检索字符串,而 lastIndexOf() 方法则是从字符串的结尾开始检索子串。例如:

var oStringObject = new String("hello world!"); 
alert(oStringObject.indexOf("o")); //输出 "4" 
alert(oStringObject.lastIndexOf("o")); //输出 "7" 

localeCompare()

  该方法有一个参数 - 要进行比较的字符串,返回的是下列三个值之一:

• 如果 String 对象按照字母顺序排在参数中的字符串之前,返回负数。

• 如果 String 对象等于参数中的字符串,返回 0
• 如果 String 对象按照字母顺序排在参数中的字符串之后,返回正数。

var oStringObject = new String("yellow"); 
alert(oStringObject.localeCompare("brick"));        //输出 "1" 
alert(oStringObject.localeCompare("yellow"));      //输出 "0" 
alert(oStringObject.localeCompare("zoo"));        //输出 "-1" 
alert(oStringObject.localeCompare("yello"));      //输出 "1" 

 


注:localeCompare() 是区分大小写的,大写字母在字母顺序上排在小写字母之后

slice() 、substring()

这两个方法的功能都是取一个字符串的字串,且都带两个参考,第一个为起始位置,第二个为结束位置,但不包括结束 位置。这两个方法并不完全相同,不过只在参数为负数时,它们处理参数的方式才稍有不同

对于负数参数,slice() 方法会用字符串的长度加上参数,substring() 方法则将其作为 0 处理 (也就是说将忽略它)。
例如:

var oStringObject = new String("hello world"); 
alert(oStringObject.slice(-3));          //输出 "rld" 
alert(oStringObject.substring(-3));      //输出 "hello world" 
alert(oStringObject.slice(3, -4));      //输出 "lo w" 
alert(oStringObject.substring(3, -4));  //输出 "hel" 
alert(oStringObject.slice(3,-10));      //返回空字符串 

 

slice(-3) 将被转换成 slice(8),而 substring(-3) 将被转换成 substring(0)。 同样,使用参数 3 和 -4 时,差别也很明显。slice() 将被转换成 slice(3, 7),与前面的例子相同,返回 "lo w"。而 substring() 方法则将两个参数解释为 substring(3, 0),实际上即 substring(0, 3),因为 substring() 总把较小的数字作为起始位,较大的数字作为终止位(但slice方法却返回空字符串)。因此,substring("3, -4") 返回的是 "hel"。这里的最后一行代码用来说明如何使用这些方法。

toLowerCase() 、toLocaleLowerCase() 、toUpperCase() 、toLocaleUpperCase()

这四个方法进行大小写转换,toLowerCase()、toUpperCase() 与地区无关,而其它两种相关。一般来说,如果不知道在以哪种编码运行一种语言,则使用区域特定的方法比较安全,但如果用作在条件语句中比较是否等于某字符串时,要使 地区无关性方法安全。

instanceof 运算符

此方法与 Java 运算符 instanceof 相似,用于判断某对象实例属于是哪种对象 。此操作只能用于引用类型。

 

变量 oStringObject 是否为 String 对象的实例:

var oStringObject = new String("hello world"); 
alert(oStringObject instanceof String); //输出 "true" 
分享到:
评论

相关推荐

    对象的类型:本地对象(1)

    简单说来,本地对象就是ECMA-262定义的类(引用类型)。它们包括: 你已经从上一章了解了一些本地对象(Object、Function、String、Boolean和Number),本书后面的章节中还会讨论一些本地对象。现在要讨论的两种...

    MySQL 5.1中文手冊

    5.10. MySQL本地化和国际应用 5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 5.10.8. ...

    利用反射动态创建对象在VS.Net中,有很多种方法动态调用对象的构造函数

    它实际上是在本地或从远程创建对象类型,或获取对现有远程对象的引用。它的方法签名是:public static object CreateInstance(Type);(还有其他重载方法)注意它的返回值为object,MSDN对返回值的描述是:对新创建...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     11.1.3 Java大对象类型的Hibernate映射类型  11.1.4 JDK自带的个别Java类的Hibernate映射类型  11.1.5 使用Hibernate内置映射类型  11.2 客户化映射类型  11.2.1 用客户化映射类型取代Hibernate组件  11.2.2 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     11.1.3 Java大对象类型的Hibernate映射类型  11.1.4 JDK自带的个别Java类的Hibernate映射类型  11.1.5 使用Hibernate内置映射类型  11.2 客户化映射类型  11.2.1 用客户化映射类型取代Hibernate组件  11.2.2 ...

    谈谈你对垃圾回收机制的了解?.docx

    一, 垃圾回收机制 在系统运行过程中会产生一些无用的对象,这些对象一直占用内存,不清理这些无用的对象可能会导致内存...jvm会把虚拟机栈和本地方法栈中正在引用的对象、静态属性引用的对象和常量,作为 GC Roots。

    CLR.via.C#.(中文第3版)(自制详细书签)Part2

    · 理解基元类型、值类型和引用类型的行为,从而最高效地定义和使用它们 · 使用泛型和接口来定义可重用的算法 · 高效使用特定的CLR类型——委托、枚举、定制attribute、数组和字符串 · 理解垃圾回收器是如何管理...

    MYSQL中文手册

    5.10. MySQL本地化和国际应用 5.10.1. 数据和排序用字符集 5.10.2. 设置错误消息语言 5.10.3. 添加新的字符集 5.10.4. 字符定义数组 5.10.5. 字符串比较支持 5.10.6. 多字节字符支持 5.10.7. 字符集问题 ...

    javascript常用对象梳理

    由于window对象是其它大部分对象的共同祖先,在调用window对象的方法和属性时,可以省略window对象的引用。例如:window.[removed]()可以简写成: [removed]()。 在窗口中觖发本窗口对象的任何方法和属性时可以省去...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     11.1.3 Java大对象类型的Hibernate映射类型  11.1.4 JDK自带的个别Java类的Hibernate映射类型  11.1.5 使用Hibernate内置映射类型  11.2 客户化映射类型  11.2.1 用客户化映射类型取代Hibernate组件  11.2.2 ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     11.1.3 Java大对象类型的Hibernate映射类型  11.1.4 JDK自带的个别Java类的Hibernate映射类型  11.1.5 使用Hibernate内置映射类型  11.2 客户化映射类型  11.2.1 用客户化映射类型取代Hibernate组件  11.2.2 ...

    Visual.Basic.2010.&.NET4.高级编程(第6版)-文字版.pdf

    2.2.1 值类型和引用类型 69 2.2.2 基本类型 71 2.3 命令:条件语句 72 2.3.1 if then 73 2.3.2 比较运算符 73 2.3.3 select case 75 2.4 值类型(结构) 75 2.4.1 布尔类型 76 2.4.2 整数类型 77 ...

    CLR.via.C#.(中文第3版)(自制详细书签)Part1

    · 理解基元类型、值类型和引用类型的行为,从而最高效地定义和使用它们 · 使用泛型和接口来定义可重用的算法 · 高效使用特定的CLR类型——委托、枚举、定制attribute、数组和字符串 · 理解垃圾回收器是如何管理...

    CLR.via.C#.(中文第3版)(自制详细书签)

    · 理解基元类型、值类型和引用类型的行为,从而最高效地定义和使用它们 · 使用泛型和接口来定义可重用的算法 · 高效使用特定的CLR类型——委托、枚举、定制attribute、数组和字符串 · 理解垃圾回收器是如何...

    CLR.via.C#.(中文第3版)(自制详细书签)Part3

    · 理解基元类型、值类型和引用类型的行为,从而最高效地定义和使用它们 · 使用泛型和接口来定义可重用的算法 · 高效使用特定的CLR类型——委托、枚举、定制attribute、数组和字符串 · 理解垃圾回收器是如何管理...

Global site tag (gtag.js) - Google Analytics