关于js类的继承问题

离子漂浮物 2009-10-18 09:34:56

var abstractClass = {
A:function(){ alert("a"); }
B:function(){ alert("b"); }
}

var tempClass = {
C:function(){ alert("c"); }
D:function(){ alert("d"); }
}


有以上两个js类,现在我想tempClass继承abstractClass要怎么作呢。
...全文
22 点赞 收藏 3
写回复
3 条回复
Objector 2009年10月18日
你这个已经不是类(或构造函数)了

var o = {};
// 上面的代码跟下面的创建方式是一回事
var o = new Object();

你那么写生成的就是实例对象,既然不是构造函数(或者你说的“类”)也就无所谓什么继承了。
如果非要实现,建议你把对象abstractClass的所有属性和方法copy过来,下面是示例代码:

// extend tempClass
function extendProperty(base, sub) {
for(var p in base) {
if(typeof sub[p] === "undefined") {
sub[p] = base[p];
}
}
}

var abstractClass = {
A:function(){ alert("a"); },
B:function(){ alert("b"); }
}

var tempClass = {
C:function(){ alert("c"); },
D:function(){ alert("d"); }
}

// extend now
extendProperty(abstractClass, tempClass);

// test
tempClass.A();
tempClass.B();


Enjoy!!
回复 点赞
离子漂浮物 2009年10月18日
ls说的继承方式我知道,但是不适用于我的那种类声明方式。
回复 点赞
MuBeiBei 2009年10月18日

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script language="javascript" type="text/javascript">
var abstractClass = function(){

}

abstractClass.prototype = {
A:function(){ alert("a"); },
B:function(){ alert("b"); }
};

var tempClass = function(){

}

tempClass.prototype = {
C:function(){ alert("c"); },
D:function(){ alert("d"); }
};

tempClass.prototype = new abstractClass();

var t = new tempClass();
t.A(); //父类的方法A

</script>
</head>

<body>
</body>
</html>

回复 点赞
发动态
发帖子
JavaScript
创建于2007-09-28

5.1w+

社区成员

22.3w+

社区内容

Web 开发 JavaScript
社区公告
暂无公告