2.8 引用类型
1、Object类
ECMAScript中的所有类都是由Object类继承而来。
Object类具有下列属性:
Constructor:对创建对象的函数的引用(指针),对于Object类,该指针指向原始的Object()函数
Prototype:对该对象的对象原型的引用。
Object类还有几个方法:
HasOwnProperty(property):判断对象是否有某个特定的属性。必须用字符串指定该属性值
IsPrototypeOf(object):判断该对象是否为另一个对象的原型。
PropertyIsEnumerable(property):判断给定的属性是否可以用for...in语句进行枚举
ToString():返回对象的原始字符串表示。
ValueOf():返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值相同。
上面列出的每种属性和方法都会被其他类覆盖。
2、Boolean类
在ECMAScript中很少使用Boolean对象,因为不易理解,如:
复制代码 代码如下:
var oFalseObject = new Boolean(false);
var bResult= oFalseObject && true; //outpus true
在这段代码中,用false值创建Boolean对象,然后用这个值与原始值true进行 AND 操作。在Boolean运算中,false和true进行AND 操作的结果是 false。不过,在这行代码中,计算的是oFalseObject,而不是它的值false。在Boolean表达式中,所有对象都会被自动转换为true,所以结果为true。参考下面的代码:
复制代码 代码如下:
var oFalseObject = new Boolean(false);
var bResult= oFalseObject && true; //outpus true
var bResult2= oFalseObject.valueOf() && true; //outpus false
3、Number类
Number的toString()方法在上篇文章中有详细的介绍。
Number有几个处理数值的专用方法:
toFixed(参数):返回的是具有指定位数小数的数字的字符串表示。参数范围为0—20
toExponential(参数):返回的是用科学计数法表示的数字的字符串形式。与toFixed()方法相似,toExponential()也有一个参数要输出的小数的位数。参数范围为0—20
toPrecision(参数):根据最有意义的形式来返回数字的预定形式或指数形式。它有一个参数,即用于表示数字总数(不包括指数)。参数最小为1
以上三个方法都会进行舍入操作。示例代码:
复制代码 代码如下:
var oNumber=new Number(99);
console.log(oNumber.toFixed(0)); //outpus 99
console.log(oNumber.toFixed(2)); //outpus 99.00
var oNumber1=new Number(99);
console.log(oNumber1.toExponential(0)); //outpus 1e+2 进行了舍入操作
console.log(oNumber1.toExponential(1)); //outpus 9.9e+1
console.log(oNumber1.toExponential(2)); //outpus 9.90e+1
var oNumber3=new Number(99);
console.log(oNumber3.toPrecision(0)); //outpus error precision 0 out of range
console.log(oNumber3.toPrecision(1)); //outpus 1e+2 进行了舍入操作
console.log(oNumber3.toPrecision(2)); //outpus 99
console.log(oNumber3.toPrecision(3)); //outpus 99.0
4、String类
String对象的valueOf()方法和toString()方法都会返回String型的原始值:
复制代码 代码如下:
var oStringObject=new String("Hello world");
console.log(oStringObject.valueOf() == oStringObject.toString());//outpus true
String类具有length属性,它是字符串中的字符个数,双字节字符也算一个字符。
String类有大量的方法,主要介绍如下:
charAt(整型参数):返回字符串中单个字符。示例:
复制代码 代码如下:
var oStringObject=new String("Hello world");
console.log(oStringObject.charAt(0));//outpus "H"
console.log(oStringObject.charAt(1));//outpus "e"
console.log(oStringObject.charAt(11));//outpus (an empty string)
charCodeAt(整型参数):返回字符串中单个字符代码。示例:
复制代码 代码如下:
var oStringObject=new String("Hello world");
console.log(oStringObject.charCodeAt(0));//outpus "72"
console.log(oStringObject.charCodeAt(1));//outpus "101"
console.log(oStringObject.charCodeAt(11));//outpus NaN
concat(字符串):把一个或多个字符串连接到String对象的原始值上。示例:
复制代码 代码如下:
var oStringObject=new String("Hello world");
var sResult=oStringObject.concat(" Concat");
console.log(oStringObject);//outpus "String { 0="H", 1="e", 2="l", ...}"
console.log(sResult);//outpus "Hello world Concat"
alert(oStringObject);//outpus "Hello world"
indexOf(字符串):返回指定的字符串在另一个字符串中的位置(从字符串的开头进行检索)。
lastIndexOf(字符串):返回指定的字符串在另一个字符串中的位置(从字符串的结尾进行检索)。示例:
复制代码 代码如下:
var oStringObject=new String("Hello Hello");
console.log(oStringObject.indexOf("lo"));//outpus 3
console.log(oStringObject.lastIndexOf("lo"));//outpus 9
localeCompare(字符串):对字符串进行排序,返回值是下列三个之一:
A、如果String对象按照字母顺序排在参数中的字符串之前,返回负数(通常是-1,但真正返回值由具体实现决定)
B、如果String对象等于参数中的字符串,返回0
C、如果String对象按照字母顺序排在参数中的字符串之后,返回正数(通常是1,但真正返回值由具体实现决定)
示例:
复制代码 代码如下:
var oStringObject=new String("Hello");
console.log(oStringObject.localeCompare("aello")); //outpus 1
console.log(oStringObject.localeCompare("Hello")); //outpus 0
console.log(oStringObject.localeCompare("zello")); //outpus -1
slice(整型参数[,整型参数])、substring(整型参数[,整型参数]):从子串创建字符串值。第一个参数是要获取的子串的起始位置,第二个参数是要获取的子串终止前的位置,如果省略第二参数,终止位就默认为字符串长度。这两个方法都不改变String对象自身值。当参数为正时两个方法用法及返回值均相同,只有参数有负值时才不同。对于负参数,slice()方法会用字符串的长度加上参数,substring()将其做为0处理。另外如果有两个参数,第二个比第一个小时,slice()返回的值为空,substring()会把较小的作为第一个参数。为示例:
复制代码 代码如下:
var oStringObject=new String("Hello World");
console.log(oStringObject.slice(3)); //outpus "lo World"
console.log(oStringObject.substring(3)); //outpus "lo World"
console.log(oStringObject.slice(3,7)); //outpus "lo W"
console.log(oStringObject.substring(3,7)); //outpus "lo W"
console.log(oStringObject.slice(3,0)); //outpus (an empty string)
console.log(oStringObject.substring(3,0)); //outpus "Hel"
console.log(oStringObject.slice(-3)); //outpus "rld"
console.log(oStringObject.substring(-3)); //outpus "Hello World"
console.log(oStringObject.slice(3,-4)); //outpus "lo W"
console.log(oStringObject.substring(3,-4)); //outpus "Hel"
toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase():前两个用于把字符串转换为全小写,后两个用于把字符串转换为全大写。toLowerCase()跟toUpperCase()是原始方法,toLocaleLowerCase()跟toLocaleUpperCase()是基于特定区域实现的。示例:
复制代码 代码如下:
var oStringObject=new String("Hello World");
console.log(oStringObject.toLowerCase()); //outpus "hello world"
console.log(oStringObject.toLocaleLowerCase()); //outpus "hello world"
console.log(oStringObject.toUpperCase()); //outpus "HELLO WORLD"
console.log(oStringObject.toLocaleUpperCase()); //outpus "HELLO WORLD"
5、instanceof运算符
在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回"object"。ECMAScript引入了另一个运算符 instanceof 来解决这个问题。
instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。示例:
复制代码 代码如下:
var oStringObject=new String("hello world");
alert(oStringObject instanceof String); //outpus "true"
1、Object类
ECMAScript中的所有类都是由Object类继承而来。
Object类具有下列属性:
Constructor:对创建对象的函数的引用(指针),对于Object类,该指针指向原始的Object()函数
Prototype:对该对象的对象原型的引用。
Object类还有几个方法:
HasOwnProperty(property):判断对象是否有某个特定的属性。必须用字符串指定该属性值
IsPrototypeOf(object):判断该对象是否为另一个对象的原型。
PropertyIsEnumerable(property):判断给定的属性是否可以用for...in语句进行枚举
ToString():返回对象的原始字符串表示。
ValueOf():返回最适合该对象的原始值。对于许多类,该方法返回的值都与toString()的返回值相同。
上面列出的每种属性和方法都会被其他类覆盖。
2、Boolean类
在ECMAScript中很少使用Boolean对象,因为不易理解,如:
复制代码 代码如下:
var oFalseObject = new Boolean(false);
var bResult= oFalseObject && true; //outpus true
在这段代码中,用false值创建Boolean对象,然后用这个值与原始值true进行 AND 操作。在Boolean运算中,false和true进行AND 操作的结果是 false。不过,在这行代码中,计算的是oFalseObject,而不是它的值false。在Boolean表达式中,所有对象都会被自动转换为true,所以结果为true。参考下面的代码:
复制代码 代码如下:
var oFalseObject = new Boolean(false);
var bResult= oFalseObject && true; //outpus true
var bResult2= oFalseObject.valueOf() && true; //outpus false
3、Number类
Number的toString()方法在上篇文章中有详细的介绍。
Number有几个处理数值的专用方法:
toFixed(参数):返回的是具有指定位数小数的数字的字符串表示。参数范围为0—20
toExponential(参数):返回的是用科学计数法表示的数字的字符串形式。与toFixed()方法相似,toExponential()也有一个参数要输出的小数的位数。参数范围为0—20
toPrecision(参数):根据最有意义的形式来返回数字的预定形式或指数形式。它有一个参数,即用于表示数字总数(不包括指数)。参数最小为1
以上三个方法都会进行舍入操作。示例代码:
复制代码 代码如下:
var oNumber=new Number(99);
console.log(oNumber.toFixed(0)); //outpus 99
console.log(oNumber.toFixed(2)); //outpus 99.00
var oNumber1=new Number(99);
console.log(oNumber1.toExponential(0)); //outpus 1e+2 进行了舍入操作
console.log(oNumber1.toExponential(1)); //outpus 9.9e+1
console.log(oNumber1.toExponential(2)); //outpus 9.90e+1
var oNumber3=new Number(99);
console.log(oNumber3.toPrecision(0)); //outpus error precision 0 out of range
console.log(oNumber3.toPrecision(1)); //outpus 1e+2 进行了舍入操作
console.log(oNumber3.toPrecision(2)); //outpus 99
console.log(oNumber3.toPrecision(3)); //outpus 99.0
4、String类
String对象的valueOf()方法和toString()方法都会返回String型的原始值:
复制代码 代码如下:
var oStringObject=new String("Hello world");
console.log(oStringObject.valueOf() == oStringObject.toString());//outpus true
String类具有length属性,它是字符串中的字符个数,双字节字符也算一个字符。
String类有大量的方法,主要介绍如下:
charAt(整型参数):返回字符串中单个字符。示例:
复制代码 代码如下:
var oStringObject=new String("Hello world");
console.log(oStringObject.charAt(0));//outpus "H"
console.log(oStringObject.charAt(1));//outpus "e"
console.log(oStringObject.charAt(11));//outpus (an empty string)
charCodeAt(整型参数):返回字符串中单个字符代码。示例:
复制代码 代码如下:
var oStringObject=new String("Hello world");
console.log(oStringObject.charCodeAt(0));//outpus "72"
console.log(oStringObject.charCodeAt(1));//outpus "101"
console.log(oStringObject.charCodeAt(11));//outpus NaN
concat(字符串):把一个或多个字符串连接到String对象的原始值上。示例:
复制代码 代码如下:
var oStringObject=new String("Hello world");
var sResult=oStringObject.concat(" Concat");
console.log(oStringObject);//outpus "String { 0="H", 1="e", 2="l", ...}"
console.log(sResult);//outpus "Hello world Concat"
alert(oStringObject);//outpus "Hello world"
indexOf(字符串):返回指定的字符串在另一个字符串中的位置(从字符串的开头进行检索)。
lastIndexOf(字符串):返回指定的字符串在另一个字符串中的位置(从字符串的结尾进行检索)。示例:
复制代码 代码如下:
var oStringObject=new String("Hello Hello");
console.log(oStringObject.indexOf("lo"));//outpus 3
console.log(oStringObject.lastIndexOf("lo"));//outpus 9
localeCompare(字符串):对字符串进行排序,返回值是下列三个之一:
A、如果String对象按照字母顺序排在参数中的字符串之前,返回负数(通常是-1,但真正返回值由具体实现决定)
B、如果String对象等于参数中的字符串,返回0
C、如果String对象按照字母顺序排在参数中的字符串之后,返回正数(通常是1,但真正返回值由具体实现决定)
示例:
复制代码 代码如下:
var oStringObject=new String("Hello");
console.log(oStringObject.localeCompare("aello")); //outpus 1
console.log(oStringObject.localeCompare("Hello")); //outpus 0
console.log(oStringObject.localeCompare("zello")); //outpus -1
slice(整型参数[,整型参数])、substring(整型参数[,整型参数]):从子串创建字符串值。第一个参数是要获取的子串的起始位置,第二个参数是要获取的子串终止前的位置,如果省略第二参数,终止位就默认为字符串长度。这两个方法都不改变String对象自身值。当参数为正时两个方法用法及返回值均相同,只有参数有负值时才不同。对于负参数,slice()方法会用字符串的长度加上参数,substring()将其做为0处理。另外如果有两个参数,第二个比第一个小时,slice()返回的值为空,substring()会把较小的作为第一个参数。为示例:
复制代码 代码如下:
var oStringObject=new String("Hello World");
console.log(oStringObject.slice(3)); //outpus "lo World"
console.log(oStringObject.substring(3)); //outpus "lo World"
console.log(oStringObject.slice(3,7)); //outpus "lo W"
console.log(oStringObject.substring(3,7)); //outpus "lo W"
console.log(oStringObject.slice(3,0)); //outpus (an empty string)
console.log(oStringObject.substring(3,0)); //outpus "Hel"
console.log(oStringObject.slice(-3)); //outpus "rld"
console.log(oStringObject.substring(-3)); //outpus "Hello World"
console.log(oStringObject.slice(3,-4)); //outpus "lo W"
console.log(oStringObject.substring(3,-4)); //outpus "Hel"
toLowerCase()、toLocaleLowerCase()、toUpperCase()、toLocaleUpperCase():前两个用于把字符串转换为全小写,后两个用于把字符串转换为全大写。toLowerCase()跟toUpperCase()是原始方法,toLocaleLowerCase()跟toLocaleUpperCase()是基于特定区域实现的。示例:
复制代码 代码如下:
var oStringObject=new String("Hello World");
console.log(oStringObject.toLowerCase()); //outpus "hello world"
console.log(oStringObject.toLocaleLowerCase()); //outpus "hello world"
console.log(oStringObject.toUpperCase()); //outpus "HELLO WORLD"
console.log(oStringObject.toLocaleUpperCase()); //outpus "HELLO WORLD"
5、instanceof运算符
在使用typeof运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回"object"。ECMAScript引入了另一个运算符 instanceof 来解决这个问题。
instanceof运算符与typeof运算符相似,用于识别正在处理的对象的类型。与typeof方法不同的是,instanceof 方法要求开发者明确地确认对象为某特定类型。示例:
复制代码 代码如下:
var oStringObject=new String("hello world");
alert(oStringObject instanceof String); //outpus "true"
标签:
ECMAScript,引用类型
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型”评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新动态
2024年11月14日
2024年11月14日
- 刘德华《劲歌集》24K金碟港版[WAV+CUE][1.2G]
- Faker五冠王什么意思 世界赛五冠王Faker选手介绍
- faker塞拉斯s14决赛什么出装 faker塞拉斯s14决赛出装介绍
- LOLtoc9魔法口令在哪可以找到 2024云顶之弈toc观赛魔法口令兑换码
- 黑鸭子2008《影视经典·珍藏版》试音碟[WAV+CUE]
- 碧娜《温柔吻语2》[WAV+CUE]
- Stravinsky-Symphonies,Volume1-OrquestaSinfonicadeGalicia,DimaSlobodeniouk(2024)[24-
- 外媒评Switch2:向下兼容是关键 但挑战依然存在
- 任天堂提醒:宠物的尿或唾液或会让NS故障 把它放好!
- 《博德3》再创新高 Steam掌机总游玩时长近2000年
- 张玮伽《想你的夜DSD》东升 [WAV+CUE][1G]
- 姚璎格《 粤 24KGOLD》正版低速原抓[WAV+CUE][1G]
- 杨千嬅《如果大家都拥有海》寰亚 [WAV+CUE][998M]
- 孟庭苇.1994-1990-1994钻石精选集2CD(2022环球XRCD限量版)【上华】【WAV+CUE】
- 群星.1998-华纳好情歌精选17首【华纳】【WAV+CUE】