asfman
android developer
IT博客
首页
新文章
新随笔
聚合
管理
posts - 90, comments - 213, trackbacks - 0
在JavaScript面向对象编程中使用继承(1)
在JavaScript面向对象编程中使用继承(1)
前几天做了一个
JScript版的CollecionBase类
,用来解决需要使用集合作为主要数据结构的类的基类。不过当时挺忙的没有给出继承的示例,搞得有的网友对JavaScript继承比较迷惑,于是今天使用四种方式来分别实现了4个ArrayList派生类。
关于使用JavaScript进行面向对象编程(OOP),网上已有很多的文章说过了。这里我推荐两篇文章大家看看,如果没有理解怎么使用JavaScript的Function对象的prototype属性来实现类定义及其原理,那么就仔细看看'
面向对象的JavaScript编程
'、'
面向对象的Jscript
'和'
Classical Inheritance in JavaScript
'哦(特别是第一篇及其相关讨论的文章),否则后面一头雾水不能怪我啦
。
那个CollectionBase就不列了,第一个链接就是它了,下面是用四种方法实现的JavaScript'继承'(以后就不打引号了,反正知道JavaScript的继承不是经典OO里的继承就行了):
构造继承法:
<
script
language
="javascript"
>
function
ArrayList01()
{
this
.base
=
CollectionBase;
this
.base();
this
.m_Array
=
this
.m_InnerArray;
this
.foo
=
function
()
{
document.write(
this
+
': '
+
this
.m_Count
+
': '
+
this
.m_Array
+
'
<
br
/>
');
}
;
this
.Add
=
function
(item)
{
this
.InsertAt(item,
this
.m_Count);
}
;
this
.InsertAt
=
function
(item, index)
{
this
.m_InnerArray.splice(index,
0
, item);
this
.m_Count
++
;
}
;
this
.toString
=
function
()
{
return
'[class ArrayList01]';
}
;
}
</
script
>
原形继承法:
<
script
language
="JavaScript"
>
function
ArrayList02()
{
this
.InsertAt
=
function
(item, index)
{
this
.m_InnerArray.splice(index,
0
, item);
this
.m_Count
++
;
}
;
this
.m_Array
=
this
.m_InnerArray;
this
.toString
=
function
()
{
return
'[class ArrayList02]';
}
;
}
ArrayList02.prototype
=
new
CollectionBase();
ArrayList02.prototype.foo
=
function
()
{
document.write(
this
+
': '
+
this
.m_Count
+
': '
+
this
.m_Array
+
'
<
br
/>
');
}
;
ArrayList02.prototype.InsertAt
=
function
(item, index)
{
this
.m_InnerArray.splice(index,
0
, item);
this
.m_Count
++
;
}
;
</
script
>
实例继承法:
<
script
language
="javascript"
>
function
ArrayList03()
{
var
base
=
new
CollectionBase();
base.m_Array
=
base.m_InnerArray;
base.foo
=
function
()
{
document.write(
this
+
': '
+
this
.m_Count
+
': '
+
this
.m_Array
+
'
<
br
/>
');
}
;
base.InsertAt
=
function
(item, index)
{
this
.m_InnerArray.splice(index,
0
, item);
this
.m_Count
++
;
}
;
base.toString
=
function
()
{
return
'[class ArrayList03]';
}
;
return
base;
}
</
script
>
附加继承法:
<
script
language
="JavaScript"
>
function
ArrayList04()
{
this
.base
=
new
CollectionBase();
for
(
var
key
in
this
.base )
{
if
(
!
this
[key] )
{
this
[key]
=
this
.base[key];
}
}
this
.m_Array
=
this
.m_InnerArray;
this
.InsertAt
=
function
(item, index)
{
this
.m_InnerArray.splice(index,
0
, item);
this
.m_Count
++
;
}
;
}
ArrayList04.prototype.foo
=
function
()
{
document.write(
this
+
': '
+
this
.m_Count
+
': '
+
this
.m_Array
+
'
<
br
/>
');
}
ArrayList04.prototype.toString
=
function
()
{
return
'[class ArrayList04]';
}
</
script
>
派生类中的foo是一个新增加的函数,用来输出类的类型和m_InnerArray里的数据。toString()相当于override了CollectionBase中的toString(),不过其实就是赋值覆盖,和'
从JavaScript函数重名看其初始化方式
'一文中说到的原理是一样的。这个四种方法的原理和区别我
稍候再作分析
,要
了...
posted on 2005-01-28 22:35
birdshome
阅读(1881)
评论(6)
编辑
收藏
收藏至365Key
所属分类:
JScript&DHTML开发
评论
#
re: 在JavaScript面向对象编程中使用继承(1)
回复
大师真是诲人不倦哪!犹如大海上的一盏明灯啊!
2005-01-29 21:58 |
Boler Guo
#
re: 在JavaScript面向对象编程中使用继承(1)
回复
这帽子扣的还能做事儿吗?! @_@
2005-01-31 18:00 |
birdshome
#
re: 在JavaScript面向对象编程中使用继承(1)
回复
大海上的一盏明灯。。。。。。海上要看灯塔,伸手不见五指的夜里才看明灯,哈哈哈哈
2005-02-01 09:30 |
阮
#
在JavaScript面向对象编程中使用继承(1) [TrackBack]
回复
Ping Back来自:blog.csdn.net
雪候鸟引用了该文章,地址:
http://blog.csdn.net/xuehouniao/archive/2005/02/17/290275.aspx
2005-02-17 00:17 |
雪候鸟
#
在JavaScript面向对象编程中使用继承(2) [TrackBack]
回复
Ping Back来自:blog.csdn.net
雪候鸟引用了该文章,地址:
http://blog.csdn.net/xuehouniao/archive/2005/02/17/290278.aspx
2005-02-17 00:18 |
雪候鸟
#
在JavaScript面向对象编程中使用继承(3)
[TrackBack]
回复
Ping Back来自:blog.csdn.net
雪候鸟引用了该文章,地址:
http://blog.csdn.net/xuehouniao/archive/2005/02/17/290280.aspx
posted on 2006-03-13 16:28
汪杰
阅读(237)
评论(0)
编辑
收藏
引用
所属分类:
javascript
只有注册用户
登录
后才能发表评论。
<
2006年10月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
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
31
1
2
3
4
常用链接
我的随笔
我的评论
我参与的随笔
留言簿
(15)
给我留言
查看公开留言
查看私人留言
随笔分类
(1)
divandcss(1)
随笔档案
(90)
2016年10月 (1)
2010年5月 (1)
2009年12月 (2)
2009年7月 (1)
2009年5月 (1)
2009年3月 (1)
2008年10月 (2)
2008年9月 (1)
2008年2月 (1)
2007年11月 (1)
2007年10月 (1)
2007年4月 (3)
2007年1月 (1)
2006年12月 (1)
2006年10月 (5)
2006年9月 (5)
2006年8月 (6)
2006年7月 (19)
2006年6月 (3)
2006年5月 (1)
2006年4月 (18)
2006年3月 (15)
文章分类
(727)
ad code(2)
ajax(20)
as3(3)
asp(javascrpt)(57)
database
Dhtml DOm(15)
div css dhtml(32)
divandcss(31)
Ext(3)
flash(6)
freemarker(1)
hengxing网站js(186)
Java(64)
javascript(228)
jquery(8)
js game(4)
js+dhtml(7)
net(4)
others(24)
sql access(17)
vml(2)
xml(9)
类(4)
文章档案
(712)
2013年6月 (1)
2013年1月 (1)
2012年12月 (1)
2012年11月 (1)
2012年9月 (2)
2012年7月 (2)
2012年6月 (6)
2012年5月 (8)
2012年4月 (1)
2012年3月 (1)
2012年2月 (2)
2011年12月 (1)
2011年11月 (2)
2011年10月 (5)
2011年9月 (3)
2011年8月 (4)
2011年7月 (2)
2011年6月 (7)
2011年5月 (1)
2011年4月 (11)
2011年3月 (4)
2010年8月 (1)
2010年5月 (5)
2010年4月 (3)
2010年3月 (1)
2010年1月 (2)
2009年12月 (1)
2009年11月 (2)
2009年9月 (5)
2009年8月 (1)
2009年7月 (3)
2009年6月 (4)
2009年5月 (6)
2009年4月 (4)
2009年3月 (8)
2009年2月 (3)
2009年1月 (2)
2008年12月 (6)
2008年11月 (5)
2008年10月 (12)
2008年9月 (6)
2008年8月 (7)
2008年7月 (2)
2008年6月 (5)
2008年5月 (3)
2008年4月 (2)
2008年3月 (12)
2008年2月 (1)
2008年1月 (3)
2007年12月 (11)
2007年11月 (18)
2007年10月 (6)
2007年9月 (3)
2007年8月 (10)
2007年7月 (5)
2007年6月 (16)
2007年5月 (8)
2007年4月 (16)
2007年2月 (3)
2007年1月 (9)
2006年12月 (11)
2006年11月 (20)
2006年10月 (29)
2006年9月 (9)
2006年8月 (17)
2006年7月 (28)
2006年6月 (19)
2006年4月 (234)
2006年3月 (59)
相册
effect
收藏夹
javascript
http://blog.csdn.net/prodigynonsense
25175asp
8da blog
8da域名转向
aimingoo
ajax60
http://www.maxkiesler.com/index.php/weblog/comments/60_more_helpful_ajax_tutorials/
ajax论坛(推荐)
ASP.NET 快速入门
aspdotnet(c#)
birdsome
birdsome
c#
china-pub
chinese-using-layouts-ext-part-1
chsmsdn
communitycsdn
csdn社区
css+xhtml
csscontent bucuo
csser
http://www.csser.org/
div css 论坛
div css 论坛
Eric Liu(For the past time)
EXT UI FORUM
EXT UI
Ext天晓得
http://blog.csdn.net/tianxiaode/
Ext教程
Ext教程
faq(javascript)
hbjswj
hbjswj
hengxing不错的js网站
http://blog.csdn.net/prodigynonsense
javascript
http://webfx.eae.net/dhtml/
http://webfx.eae.net/dhtml/
http://www.elook.net.cn/handbook/php/index.html
http://www.elook.net.cn/handbook/php/index.html
http://www.shu3.net/blog/default.asp?cateID=14
http://www.shu3.net/blog/default.asp?cateID=14
http://www.suhai.com.cn/control/
http://www.suhai.com.cn/control/
http://www.xmlhttp.cn/
http://www.xmlhttp.cn/
http://www.xmlhttp.cn/manual/xmlhttprequest.html
http://www.xmlhttp.cn/manual/xmlhttprequest.html
hutia's friend
ivvn
J2EE BBS
JAVASCRIPT(NEW)
javascript-english
JAVA菜鸟
jser's blog 1111
JS语法参考含实例
http://javascript-reference.info/#object
meizz
meizz的专栏
music
mysql手册
photoshop
php
php手册
relax life(MANY CODES)
relaxlife
Thinking in Java 3rd Edition,中文版
ttyp
javascript
validate xml
vml学习
cccccc
w3schoolsphp
http://www.w3schools.com/php/php_intro.asp
where there is a will ,there is a way
xml
xml学习 某人的blog
xml学习教程
xml论坛
一夜千鸟
一夜千鸟
与51js同步的好网站哦
两万原代码疯狂下载
人大英语角BBS
http://www.csser.org/
向他学习
国内ajax站点
http://www.jrj.com/
天气预报
script srchttp://dw8.cn/2006/tq script
好的js个人网站
布鲁狼
很多chm
W3CHINA.ORG讨论区
有一些js
风云给
沙子的Blog
沪江论坛
http://www.csser.org/
泣红亭
游戏人blog
苹果生活ajax
讨债公司
韩国网址
友情链接
搬家公司
最新随笔
1. 使用 Vue.js 创建的 Calendar
2. [转]培养自己的气质
3. 睡觉时间
4. chrome快捷键
5. 知者弗言 言者弗知
6. __proto__
7. 人法地,地法天,天法道,道法自然
8. jq之filter
9. Javascript的调试利器:Firebug使用详解(转)
10. 天道台词
搜索
积分与排名
积分 - 466814
排名 - 6
最新随笔
1. 使用 Vue.js 创建的 Calendar
2. [转]培养自己的气质
3. 睡觉时间
4. chrome快捷键
5. 知者弗言 言者弗知
6. __proto__
7. 人法地,地法天,天法道,道法自然
8. jq之filter
9. Javascript的调试利器:Firebug使用详解(转)
10. 天道台词
最新评论
1. re: 关于编码、unicode、utf-8的讨论
:cache-control,Expires。
--张丹宁
2. re: Android NFC相关资料之MifareClassic卡(读写)
我目前需要读写MifareClassic卡,目前还是小白,希望大神指教!
--彭林
3. re: JS获取输入框当前光标左右文本(zt)
温热we
--二万人
4. re: Android NFC相关资料之MifareClassic卡(读写)
514701946@qq.com @ff
--ff
5. re: Android NFC相关资料之MifareClassic卡(读写)
最近在研究这个,请问有没有源码,谢谢你
--ff
阅读排行榜
1. Javascript的调试利器:Firebug使用详解(转) (5534)
2. Codepage的定义和历史(3860)
3. 关于编码、unicode、utf-8的讨论(3525)
4. Eclipse实用教程 (2544)
5. 如何学JAVA(2515)
评论排行榜
1. program which duplicates itself(6)
2. 关于编码、unicode、utf-8的讨论(4)
3. think about push and pop (3)
4. chrome快捷键(3)
5. prototype重新记忆(2)