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


Posted in Javascript onDecember 29, 2006
在ECMAScript中,所有对象并非同等创建的。一般说来,可以创建并使用的对象有三种。

3.3.1 本地对象

ECMA-262把本地对象(native object)定义为“独立于宿主环境的ECMAScript实现提供的对象”。简单说来,本地对象就是ECMA-262定义的类(引用类型)。它们包括:
对象的类型:本地对象(1)
你已经从上一章了解了一些本地对象(Object、Function、String、Boolean和Number),本书后面的章节中还会讨论一些本地对象。现在要讨论的两种重要的本地对象是Array和Date。
1. Array
与Java不同的是,在ECMAScript中有真正的Array类。可以如下创建Array对象:
对象的类型:本地对象(1)
如果预先知道数组中项的个数,可以用参数传递数组的大小:
对象的类型:本地对象(1)
使用这两个方法,一点要使用括号,与它们在Java中的用法相似:
对象的类型:本地对象(1)
这里创建了一个数组,并定义了三个数组项,即"red"、"green"和"blue"。每增加一个数组项,数组的大小就动态地增长。
此外,如果知道数组应该存放的值,还可用参数声明这些值,创建大小与参数个数相等的Array对象。例如,下面的代码将创建一个有三个字符串的数组:
对象的类型:本地对象(1)
与字符串类似,数组中的第一个项位于位置0,第二个项位于位置1,依此类推。可通过使用方括号中放置要读取的项的位置来访问特定的项。例如,要用刚才定义的数组输出字符串"green",可以采用下面的代码:
对象的类型:本地对象(1)
可用属性length得到数组的大小。与字符串的length属性一样,数组的length属性也是最后一个项的位置加1,意味着具有三个项的数组中的项的位置是从0到2。
对象的类型:本地对象(1)
前面提过,数组可以根据需要增大或减小。因此,如果要为前面定义的数组增加一项,只需把要存放的值放入下一个未使用的位置即可:
对象的类型:本地对象(1)
在这段代码中,下一个未使用的位置是3,所以值"purple"将被赋予它。增加一项使数组的大小从3变成了4。但如果把值放在这个数组的位置25处会怎样呢?ECMAScript将把从3开始到24的所有位置都填上值null,然后在位置25处放上正确的值,并把数组大小增大为26:
对象的类型:本地对象(1)
数组最多可以存放4294967295项,这应该可满足大多数程序设计的需要。如果要添加更多的项,则会发生异常。
还可以用字面量表示定义Array对象,即使用方括号([和]),用逗号分隔值。例如,可以用下面的形式重写前面的例子:
对象的类型:本地对象(1)
注意,在这个例子中,未明确使用Array类。方括号暗示把其中的值存放在Array对象中。用这种方式声明的数组与用传统方式声明的数组相同。
Array对象覆盖了toString()方法和valueOf()方法,返回特殊的字符串。该字符串是通过对每项调用toString()方法,然后用逗号把它们连接在一起构成的。例如,对具有项"red"、"green"和"blue"的数组调用toString()方法或valueOf()方法,返回的是字符串"red,green,blue"。
对象的类型:本地对象(1)
类似的,toLocaleString()方法返回的也是由数组项构成的字符串。唯一的区别是得到的值是通过调用每个数组项的toLocaleString()方法得到的。许多情况下,该方法返回的值都与toString()方法返回的值相同,也是用逗号连接字符串。
对象的类型:本地对象(1)
由于开发者也可能希望在数组之外创建这样的值,所以ECMAScript提供了方法join(),它唯一的用途就是连接字符串值。join()方法只有一个参数,即数组项之间使用的字符串。考虑下面的例子:
对象的类型:本地对象(1)
这里用方法join()创建了三种不同的数组表示。第一个join()方法使用逗号,本质上与调用toString()方法或valueOf()方法等价。第二个和第三个join()方法使用不同的字符串,在数组项之间创建了奇怪的分隔符(可能不怎么有用)。理解的重点在于任何字符串都可以用作分隔符。
此刻也许你想知道,既然Array具有把自己转换成字符串的方法,那么String是否有把自己转换成数组的方法呢?答案是肯定的。String类的方法split()正用于此。split()方法只有一个参数。可能有读者已经猜到,该参数就是被看作数组项之间的分隔符的字符串。因此,如果有一个由逗号分隔的字符串,就可以用下面的代码把它转换成Array对象:
对象的类型:本地对象(1)
如果把空字符串声明为分隔符,那么split()方法返回的数组中的每个项是字符串的字符,例如:
对象的类型:本地对象(1)
这里,字符串"green"将被转换成字符串数组"g"、"r"、"e"、"e"和"n"。如果需要逐个字符的解析字符串,这种功能非常有用。
Array对象具有两个String类具有的方法,即concat()和slice()方法。concat()方法处理数组的方式几乎与它处理字符串的方式完全一样。参数将被附加在数组末尾,返回的函数值是新的Array对象(包括原始数组中的项和新的项)。例如:
对象的类型:本地对象(1)
在这个例子中,用concat()方法把字符串"yellow"和"purple"加到数组中。数组aColors2包括5个值,而原始数组aColors仍只有3个值。可通过对两个数组分别调用toString()方法证明这一点。
Javascript 相关文章推荐
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
Jun 28 Javascript
jQuery最佳实践完整篇
Aug 20 Javascript
jQuery之过滤元素操作小结
Nov 30 Javascript
JavaScript获取页面中第一个锚定文本的方法
Apr 03 Javascript
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
May 09 Javascript
js判断某个字符出现的次数的简单实例
Jun 03 Javascript
jquery轮播的实现方式 附完整实例
Jul 28 Javascript
Jquery实现上下移动和排序代码
Oct 17 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 Javascript
vue axios请求拦截实例代码
Mar 29 Javascript
Vue+Django项目部署详解
May 30 Javascript
深入解读Node.js中的koa源码
Jun 17 Javascript
JavaScript高级程序设计
Dec 29 #Javascript
JavaScript 参考教程
Dec 29 #Javascript
js自带函数备忘 数组
Dec 29 #Javascript
slice函数的用法 之不错的应用
Dec 29 #Javascript
通过js脚本复制网页上的一个表格的不错实现方法
Dec 29 #Javascript
javascript中对对层的控制
Dec 29 #Javascript
JavaScript方法和技巧大全
Dec 27 #Javascript
You might like
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
深入密码加salt原理的分析
2013/06/06 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
javascript 获取元素位置的快速方法 getBoundingClientRect()
2009/11/26 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
javascript对中文按照拼音排序代码
2014/08/20 Javascript
JQuery的ON()方法支持的所有事件罗列
2015/02/28 Javascript
javascript常用正则表达式汇总
2015/07/31 Javascript
JavaScrip调试技巧之断点调试
2015/10/22 Javascript
利用js编写响应式侧边栏
2016/09/17 Javascript
JavaScript之Vue.js【入门基础】
2016/12/06 Javascript
Node.js中的不安全跳转如何防御详解
2018/10/21 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
ES6知识点整理之对象解构赋值应用示例
2019/04/17 Javascript
vue中uni-app 实现小程序登录注册功能
2019/10/12 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
js实现验证码干扰(静态)
2021/02/22 Javascript
Python遍历目录的4种方法实例介绍
2015/04/13 Python
python爬虫之自动登录与验证码识别
2020/06/15 Python
解决Python下json.loads()中文字符出错的问题
2018/12/19 Python
Python函数装饰器常见使用方法实例详解
2019/03/30 Python
pytorch中图像的数据格式实例
2020/02/11 Python
python为什么要安装到c盘
2020/07/20 Python
利用Python将图片中扭曲矩形的复原
2020/09/07 Python
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
AOP的定义以及作用
2013/09/08 面试题
法律专业求职信
2014/05/24 职场文书
2014年新教师工作总结
2014/11/08 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
《西游记》读后感(3篇)
2019/09/20 职场文书
导游词之太湖
2019/10/08 职场文书
Golang 编译成DLL文件的操作
2021/05/06 Golang