《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 相关文章推荐
js 小数取整的函数
May 10 Javascript
基于Asp.net与Javascript控制的日期控件
May 22 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
Sep 12 Javascript
JavaScript栏目列表隐藏/显示简单实现
Apr 03 Javascript
javascript格式化日期时间方法汇总
Jun 19 Javascript
JavaScript中的call和apply的用途以及区别
Jan 11 Javascript
bootstrap table实现单击单元格可编辑功能
Mar 28 Javascript
js实现适配不同的屏幕大小
Apr 10 Javascript
JQuery EasyUI的一些常用组件
Jul 12 jQuery
ES6中的rest参数与扩展运算符详解
Jul 18 Javascript
使用layui 渲染table数据表格的实例代码
Aug 19 Javascript
浅谈JS中this在各个场景下的指向
Aug 14 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
ThinkPHP独立分组使用的注意事项
2014/11/25 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
破解Session cookie的方法
2006/07/28 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
2012/02/03 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
jquery.validate使用详解
2016/06/02 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
vue实现打印功能的两种方法
2018/09/07 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
jQuery实现动态加载(按需加载)javascript文件的方法分析
2019/05/31 jQuery
vue实现节点增删改功能
2019/09/26 Javascript
vue vant Area组件使用详解
2019/12/09 Javascript
JS自定义滚动条效果
2020/03/13 Javascript
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
python顺序执行多个py文件的方法
2019/06/29 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
在django admin中配置搜索域是一个外键时的处理方法
2020/05/20 Python
Python学习之os模块及用法
2020/06/03 Python
英国户外装备和冒险服装零售商:alloutdoor
2018/01/30 全球购物
纽约海:Sea New York
2018/11/04 全球购物
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
新浪网技术部笔试题
2016/08/26 面试题
向领导表决心的话
2014/03/11 职场文书
临时工聘用合同协议书
2014/10/29 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
班级元旦晚会开幕词
2015/01/29 职场文书
求职导师推荐信范文
2015/03/27 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
Python 数据可视化神器Pyecharts绘制图像练习
2022/02/28 Python
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
Kubernetes关键组件与结构组成介绍
2022/03/31 Servers