《JavaScript高级程序设计》阅读笔记(三) ECMAScript中的引用类型


Posted in Javascript onFebruary 27, 2012

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"
Javascript 相关文章推荐
prototype1.4中文手册
Sep 22 Javascript
完整显示当前日期和时间的JS代码
Sep 17 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
Apr 27 Javascript
javascript中this的四种用法
May 11 Javascript
jQuery选择器基础入门教程
May 10 Javascript
JavaScript地理位置信息API
Jun 11 Javascript
Vue-router路由判断页面未登录跳转到登录页面的实例
Oct 26 Javascript
基于jquery.page.js实现分页效果
Jan 01 jQuery
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
Jan 07 Javascript
从零开始实现Vue简单的Toast插件
Dec 03 Javascript
vue路由切换之淡入淡出的简单实现
Oct 31 Javascript
详解关于Vue单元测试的几个坑
Apr 26 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
Feb 27 #Javascript
《JavaScript高级程序设计》阅读笔记(一) ECMAScript基础
Feb 27 #Javascript
JavaScript 代码压缩工具小结
Feb 27 #Javascript
根据邮箱的域名跳转到相应的登录页面的代码
Feb 27 #Javascript
设置iframe的document.designMode后仅Firefox中其body.innerHTML为br
Feb 27 #Javascript
jQuery学习笔记之控制页面实现代码
Feb 27 #Javascript
JQuery获取浏览器窗口内容部分高度的代码
Feb 24 #Javascript
You might like
透析PHP的配置文件php.ini
2006/10/09 PHP
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
php清空(删除)指定目录下的文件,不删除目录文件夹的实现代码
2014/09/04 PHP
教你php如何实现验证码
2016/01/20 PHP
php实现通过soap调用.Net的WebService asmx文件
2017/02/27 PHP
Laravel框架验证码类用法实例分析
2019/09/11 PHP
jQuery表格插件ParamQuery简单使用方法示例
2013/12/05 Javascript
JS正则表达式验证数字代码
2014/01/28 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
JavaScript实现Iterator模式实例分析
2015/06/09 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
Vue中控制v-for循环次数的实现方法
2018/09/26 Javascript
js字符串类型String常用操作实例总结
2019/07/05 Javascript
浅析webpack-bundle-analyzer在vue-cli3中的使用
2019/10/23 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
django创建自定义模板处理器的实例详解
2017/08/14 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
Python实现的端口扫描功能示例
2018/04/08 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
Python配置虚拟环境图文步骤
2019/05/20 Python
python使用HTMLTestRunner导出饼图分析报告的方法
2019/12/30 Python
通过实例解析python subprocess模块原理及用法
2020/10/10 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
python自动从arxiv下载paper的示例代码
2020/12/05 Python
美国山地自行车、露营、户外装备和服装购物网站:Aventuron
2018/05/05 全球购物
美国领先的个性化礼品商城:Personalization Mall
2019/07/27 全球购物
大二自我鉴定范文
2013/10/05 职场文书
企业门卫岗位职责
2013/12/12 职场文书
人力资源部副职的竞聘演讲稿
2014/01/07 职场文书
学习委员自我鉴定
2014/01/13 职场文书
市场营销大学生职业规划书
2014/02/25 职场文书
医学求职信
2014/05/28 职场文书
加强作风建设工作总结
2014/10/23 职场文书
2015年超市工作总结
2015/04/09 职场文书
JVM钩子函数的使用场景详解
2021/08/23 Java/Android
MySQL创建管理HASH分区
2022/04/13 MySQL