Flyingis
Talking and thinking freely !
Flying in the world of GIS !
BlogJava
|
首页
|
发新随笔
|
发新文章
|
联系
|
聚合
|
管理
随笔:156 文章:16 评论:545 引用:0
JavaScript 中的对象(上)
作者:
Flyingis
面向对象语言需要具备三种基本特征:继承(Inheritance)、多态 (Polymorphism) 、封装(Encapsulation and Aggregation)。和Java 、C++ 等语言一样,ECMAScript 被认为是面向对象的,因为它同时支持这些特征。
var
obj
=
new
Object();
该语句创建了一个对象,当构造函数没有参数时,可以省略后面的括号。我们通常是通过对象的引用来进行对象操作,当一个对象的引用为null时,ECMAScript将启动垃圾回收程序删除该对象,释放内存。当一个对象存在多个引用时,需要将所有的引用设置为null来释放该对象所占用的空间。
1
早期绑定和动态绑定
早期绑定是指在对象被实例化之前对象的属性和方法已经被定义,使得编译器或解释器能够提前编译机器码。Java和VB支持这种特性,但ECMAScript 并非强类型,不支持早期绑定。
动态绑定是指编译器或解释器在运行时才知道该对象的具体类型,之前并不会检查,只会判断这些属性和方法是否得到该对象的支持。ECMAScript对所有的变量使用动态绑定。
2
对象类型
2.1 原始对象
ECMA-262 定义不受主机环境影响的ECMAScript支持的任意对象为原始对象,简而言之,原始对象就是ECMA-262定义的引用类型,比较常用的有Object、Function、String、Boolean、Number、Array、Date。
Array
Array有许多常用的方法,很多和Java类似,在此不作介绍。需要注意的是,使用push()和pop()两个方法,可以将Array看作一个栈,遵循后进先出规则(LIFO)。使用shift()和push()两个方法,Array对象即可看作是一个队列,遵循后进后出的规则(LILO)。splice()方法非常有用,它轻松的实现了链表的一些基本功能,如删除数据项、插入数据、替换数据。
Date
ECMAScript中的Date类是基于Java早期版本中的java.util.Date类的,它可以精确表示1970年1月1日(格林威治时间)前后285616年的任意时间。Date是少有的几个重写了toString()和valueOf()方法,并且两个方法并不相同的类。valueOf()通常表示精确到毫秒级的时间,toString()通常返回个性化的时间表示方法,例如相同的时间在不同浏览器下显示的效果可能不一样。
2.2 Build-in对象
Build-in 对象除了具备原始对象的基本特性外,它在 ECMAScript 程序开始运行时就可以使用,因此可以说任何 Build-in 对象就是原始对象。目前 ECMA-262 只定义了两个 Build-in 对象: Global 和 Math 。
Global
在ECMAScript里,没有函数可以单独存在,所有的函数都必须是某个对象的方法。如isNan()、isFinite()、parseInt()、parseFloat()、encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent() 等均是Global对象的方法,除此之外,Global对象还包括一些属性。
Math
Math中有许多属性和方法可以用于数学计算,和Java中的比较类似。
2.3 Host 对象
除了原始对象和Build-in对象外,其他对象均是Host对象。所有的BOM和DOM对象均被认为是Host对象。
3
类成员的访问方式
在面向对象语言程序设计中,常见的类成员访问方式有public、protected和private。在ECMAScript中,只有public一种访问方式,对象中所有的属性和方法都是可见的,因此,在程序设计时需要额外注意系统安全性的问题。在没有合理的程序规范之前,程序员在编写ECMAScript代码时,通常使用一定规范的命名方式来说明该属性或方法是私有的(仅仅是说明而已,实际上还是公有的),例如在名称前后加上下划线,或只在名称前加下划线。另外,在ECMAScript中没有static方法。
4 this
关键字
this关键字是ECMAScript中一个非常重要的概念,通常在对象的方法中使用。
function
whatFruit()
{
alert(
this
.color);
}
var
table1
=
new
Object;
table1.fruit
=
"
apple
"
;
table1.whatFruit
=
whatFruit;
var
table2
=
new
Object;
table2.fruit
=
"
pear
"
;
table2.whatFruit
=
whatFruit;
table1.whatFruit();
//
输出apple
table2.whatFruit();
//
输出pear
当一个变量前面没有对象或this来引用时,ECMAScript认为该变量是一个本地的或全局变量,于是在本地和全局中去搜寻该变量,如果最后仍没有找到,将会在alert中输出null。
文章待续……
发表于 2006-06-30 15:20
Flyingis
阅读(1768)
评论(0)
编辑
收藏
所属分类:
Web 客户端技术
新闻频道
新用户注册
刷新评论列表
标题
姓名
主页
验证码
*
内容(请不要发表任何与政治相关的内容)
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
该文被作者在 2006-07-25 21:19 编辑过
博客园
BlogJava
博客生活
IT博客网
C++博客
PHP博客
博客园社区
管理博客
教师博客
天文博客
汽车博客
足球博客
股票博客
电子博客
管理
相关文章:
[DWR文档] WEB-INF 参考
DWR 中文文档
用 JavaScript 玩转 DOM Level 1
[翻译] 如何在 JavaScript 中实现拖放(下)
[翻译] 如何在 JavaScript 中实现拖放(中)
[翻译] 如何在 JavaScript 中实现拖放(上)
JavaScript 随笔汇集
[翻译] "this" of JavaScript
JavaScript 对象的反射及应用
使用 JSON 创建对象
<
2006年6月
>
日
一
二
三
四
五
六
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
公告
Flyingis
博客空间内所有文章除特别声明为[转载],均为作者的学习心得和原创作品。如要转载,请注明作者名
flyingis及原文地址
联系方式
----
博客订阅
----
Google 广告
----
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(28)
给我留言
查看公开留言
查看私人留言
我参与的团队
架构师之家(0/0)
WebGIS开发设计组(0/0)
随笔分类
Algorithm(4)
(rss)
ArcEngine(9)
(rss)
ArcGIS Server(5)
(rss)
ArcIMS(7)
(rss)
ArcSDE(2)
(rss)
Diary(22)
(rss)
Eclipse Plugin(1)
(rss)
GIS-GPS-RS(28)
(rss)
Hibernate(6)
(rss)
JavaSE(28)
(rss)
Linux | Unix 技术(5)
(rss)
Web 客户端技术(24)
(rss)
Web 框架与开发(11)
(rss)
其他开源(3)
(rss)
架构与设计(8)
(rss)
随笔档案
2008年4月 (1)
2007年12月 (2)
2007年10月 (2)
2007年9月 (4)
2007年8月 (3)
2007年7月 (2)
2007年6月 (4)
2007年5月 (2)
2007年4月 (8)
2007年3月 (4)
2007年1月 (4)
2006年12月 (2)
2006年11月 (7)
2006年10月 (6)
2006年9月 (11)
2006年8月 (5)
2006年7月 (8)
2006年6月 (6)
2006年5月 (3)
2006年4月 (7)
2006年3月 (9)
2006年2月 (5)
2006年1月 (11)
2005年12月 (16)
2005年11月 (19)
2005年10月 (5)
文章分类
Health(1)
(rss)
Life(4)
(rss)
Recycle Bin(4)
(rss)
Technology(7)
(rss)
新闻档案
2006年10月 (1)
.Net 技术
ASP.net
(rss)
Ajax Technology
Ajaxian
(rss)
AjaxPatterns
Ajax中国
(rss)
ASP.Net Ajax
(rss)
Cross Browser
dp.SyntaxHighlighter
DWR
dynarch.com
(rss)
JavaScript Weblog
(rss)
Prototype
Rico
script.aculo.us
SoftComplex
WebFX
Eclipse Technology
Eclipse
Eclipsepowered
EclipseWorld
ESRI Technology
ESRI
(rss)
ESRI Developer Network
ESRI 中国
(rss)
ESRI 中国社区
GIS Technology
EOGEO
FreeGIS
GISuser.com
OGC
(rss)
OSGeo
uDig
Java Technology
Dev2Dev
(rss)
IBM developerWorks(CN)
IBM developerWorks(EN)
InfoQ
InfoQ in China
JavaEye
(rss)
Matrix
Openfans
(rss)
TheServerSide
(rss)
Linux Technology
LinuxSir
Ubuntu
中国Linux公社
Open Source
Apache
PostgreSQL
(rss)
SourceForge
个人博客
Flyingis in 3sNews
(rss)
Flyingis in cnblogs
(rss)
Flyingis in JavaEye
(rss)
精彩博客(技术类)
Carlwave-陆飞
(rss)
dudu
(rss)
emu
(rss)
Java Tang
(rss)
pesome
(rss)
sinoly
(rss)
zkjbeyond
(rss)
天狼
(rss)
姜利阳
(rss)
浩淼的天空
(rss)
蓝色森林
(rss)
马维峰
(rss)
精彩博客(非技术)
摄影博客-抓拍城市
(rss)
搜索
积分与排名
积分 - 311532
排名 - 13
最新评论
1. re: 小议final关键字
夯实基础,势在必行!
--Robert Hamming
2. re: 在Linux下安装JDK及环境设置
logout是为了让环境变量生效,source或切换用户就行。
--Flyingis
3. re: ArcGIS Server 开发系列(一)--编程框架总览
是发在博客上的系列文章
http://flyingis.cnblogs.com
--Flyingis
4. re: shapefile 和 MapGIS 文件格式之间的转换
相对完善的转换软件会有一定市场,现在用在哪些行业了?
--Flyingis
5. re: shapefile 和 MapGIS 文件格式之间的转换
评论内容较长,点击标题查看
--eeleo
阅读排行榜
1. JavaScript 调试工具(10564)
2. 在Linux下安装JDK及环境设置(10353)
3. ArcIMS 体系结构(6528)
4. DWR 中文文档(6275)
5. [翻译] 如何在 JavaScript 中实现拖放(上)(5138)
6. Hibernate学习心得--性能优化(4566)
7. [翻译] 如何在 JavaScript 中实现拖放(下)(4051)
8. 了解 Ajax 框架--充电开始(4024)
9. 正则表达式--JavaScript 实现基础(3918)
10. Java接口特性学习(3767)
11. IntelliJ IDEA 5.1 初步感受 + crack(3740)
12. ArcIMS 连接器--.NET Link 使用方法(3638)
13. [翻译] 如何在 JavaScript 中实现拖放(中)(3567)
14. 用 JavaScript 玩转 DOM Level 1(3525)
15. 测试你电脑功率的大小(3419)
评论排行榜
1. wallop 和orkut 的差异(143)
2. ArcIMS 连接器--.NET Link 使用方法(70)
3. IntelliJ IDEA 5.1 初步感受 + crack(16)
4. ArcIMS 体系结构(12)
5. [翻译] 如何在 JavaScript 中实现拖放(下)(11)