爪哇之家
BlogJava
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
35 随笔 :: 29 文章 :: 8 评论 :: 0 Trackbacks
<
2024年12月
>
日
一
二
三
四
五
六
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
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(2)
给我留言
查看公开留言
查看私人留言
随笔分类
php(7)
(rss)
windows(7)
(rss)
随笔档案
2008年12月 (1)
2008年5月 (1)
2008年3月 (1)
2007年12月 (1)
2007年11月 (3)
2007年10月 (1)
2007年9月 (1)
2007年5月 (1)
2007年2月 (1)
2007年1月 (1)
2006年11月 (2)
2006年10月 (4)
2006年9月 (1)
2006年6月 (2)
2006年5月 (2)
2006年4月 (3)
2006年3月 (3)
2005年12月 (3)
2005年11月 (2)
文章分类
java(5)
(rss)
javascript(11)
(rss)
linux(12)
(rss)
文章档案
2006年11月 (1)
2006年10月 (2)
2006年9月 (8)
2006年8月 (5)
2006年7月 (9)
2006年6月 (3)
2005年11月 (1)
网站收藏
http://sheneyan.com/
(rss)
http://www.java2s.com
http://www.w3cn.org
http://www.xfocus.net
搜索
最新评论
1. re: iis6的问题:Timer_MinBytesPerSecond,Timer_ConnectionIdle
还是不能解决问题,原因应该不是这个
--乾龙
2. re: 简单的JAVA防火墙
加点中文说明就好了!
--heyang
3. re: moodle安装笔记
不能登陆,说是cookie没有开启,可以说的具体点吗?我是个新手,拜托啊!
--李然
4. 文件不能下载
评论内容较长,点击标题查看
--dreamour
5. re: moodle安装笔记
我在同一台服务器上开设两个moodle站点,本地登陆都没有问题,但挂上网后其中一个登陆就老说ccookie问题,不能登陆。请问这种问题怎么解决?谢谢!
--hh
阅读排行榜
1. delphi用ADO控件读EXCEL或DBF文件(6404)
2. iis6的问题:Timer_MinBytesPerSecond,Timer_ConnectionIdle(3195)
3. 网页视频代码(1616)
4. moodle安装笔记(1361)
5. 18位公民身份证号码的编排规则(665)
评论排行榜
1. moodle安装笔记(3)
2. Aspirin - 简单实现邮件发送功能,不需要SMTP服务器(1)
3. 网页视频代码(1)
4. iis6的问题:Timer_MinBytesPerSecond,Timer_ConnectionIdle(1)
5. 使用模板模式简化DAO操作Hibernate(1)
JavaScript中的继承(上)
继承是面向对象语言基本特征之一,通过继承可以将父类所具有的特性遗传到子类。ECMAScript中的继承不像Java、C++等语言那么明显,直接通过关键字来实现,通常它是通过模拟方式来实现继承功能的,并且实现方式有多种。
在继承中引入this关键字,使用构造器方法定义类来实现继承。一个构造器是一个函数,因此可以将父类的构造器作为子类的一个方法使用并进行调用。
function
ClassA(id)
{
this
.id
=
id;
this
.sayId
=
function
()
{
alert(
this
.id);
}
;
}
function
ClassB(id, name)
{
this
.newMethod
=
ClassA;
this
.newMethod(id);
delete
this
.
newMethod;
this
.name
=
name;
this
.sayName
=
function
()
{
alert(
this
.name);
}
;
}
注意,子类中所有新的属性和方法都必需在删除newMethod后引入,否则,可能存在用父类的属性和方法重写子类属性和方法的危险。另外,使用这种方法 还可以实现多重继承,此时如果两个父类具有相同的属性或方法时,最后的类具有优先级。由于这种继承方法比较流行,ECMAScript第三版引入了两个 Function对象:call()和apply()。
call()
call()方法是最接近上述继承方式的方法,它的第一个参数是this指向的对象,所有的其他参数都直接传到function。
function
sayMessage(first, last)
{
alert(first
+
this
.logic
+
last);
}
;
var
obj
=
new
Object();
obj.logic
=
"
or
"
;
sayMessage.call(obj,
"
Coffee
"
,
"
Tea
"
);
//
输出"Coffee or Tea"
用call()方法来实现继承,只需要this.newMethod相关的三行代码。
function
ClassB(id, name)
{
//
this.newMethod = ClassA;
//
this.newMethod(id);
//
delete this.newMethod;
ClassA.call(
this
, id);
//
this指向ClassB的对象
this
.name
=
name;
this
.sayName
=
function
()
{
alert(
this
.name);
}
;
}
apply()
apply()方法需要两个参数:this所指向的对象,和传到function的由参数组成的array。
function
sayMessage(first, last)
{
alert(first
+
this
.logic
+
last);
}
;
var
obj
=
new
Object();
obj.logic
=
"
or
"
;
sayMessage.apply(obj,
new
Array(
"
Coffee
"
,
"
Tea
"
));
//
输出"Coffee or Tea"
同样,使用 apply() 实现继承可以通过如下方法实现。
function
ClassB(id, name)
{
//
this.newMethod = ClassA;
//
this.newMethod(id);
//
delete this.newMethod;
ClassA.apply(
this
,
new
Array(id));
//
this指向ClassB的对象
this
.name
=
name;
this
.sayName
=
function
()
{
alert(
this
.name);
}
;
}
当父类构造器的参数和子类构造器参数的顺序一致时,可以使用子类的arguments对象作为第二个参数。否则,必需创建一个array来传递参数,或是使用call()方法。
posted on 2006-07-16 13:29
爪哇之家
阅读(140)
评论(0)
编辑
收藏
所属分类:
javascript
Powered by:
BlogJava
Copyright © 爪哇之家