当前位置: 代码迷 >> Web前端 >> 四、引用类型(本地对象)
  详细解决方案

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

热度:82   发布时间:2012-11-04 10:42:42.0
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"

?

  相关解决方案