读书人

请问一个prototype继承的有关问题

发布时间: 2013-07-16 22:38:05 作者: rapoo

请教一个prototype继承的问题
第一种情况
PDCRS={}
PDCRS.Base = function() {}
PDCRS.Base.prototype.Dao = function() {}

function ConfrontationNaming() {
this.Dao();//这里可以正常调用
}

ConfrontationNaming.prototype = new PDCRS.Base();
ConfrontationNaming.prototype.constructor = ConfrontationNaming;

第二种情况
PDCRS={}
PDCRS.Base = function() {}
PDCRS.Base.prototype.Dao = function() {}
PDCRS.Base.prototype.Dao.prototype.saveScore() {}

function ConfrontationNaming() {
this.Dao.saveScore();//这里提示没有saveScore方法
}

ConfrontationNaming.prototype = new PDCRS.Base();
ConfrontationNaming.prototype.constructor = ConfrontationNaming;

请高手解答,要怎样才能使第二种调用能够成功执行?
[解决办法]
function ConfrontationNaming() {
new this.Dao().saveScore();//这里提示没有saveScore方法

}

saveScrore是PDCRS.Base.prototype.Dao这个空间下的,不是PDCRS.Base的,ConfrontationNaming.prototype的原型为 new PDCRS.Base();
[解决办法]

引用:
Quote: 引用:

PDCRS={}
PDCRS.Base = function(){return alert(1)}
PDCRS.Base.prototype.Dao = function(){return alert(2)}
PDCRS.Base.prototype.Dao.prototype.saveScore = function(){return alert(3)}

function ConfrontationNaming() {
this.saveScore();// 能用了
}

ConfrontationNaming.prototype = new PDCRS.Base().Dao();
// ConfrontationNaming.prototype.constructor = ConfrontationNaming;
// 这句话没用了,因为ConfrontationNaming没有构造器了
用火狐调试无误的

我的意思是想要Base里有多个对象比如Dao,Html 然后这些对象也有多个方法。
我在子类都要继承他们 然后调用的时候就this.Dao.saveScore(); this.Html.Img(); 类似这样
直接用类方法在子类中添加函数
PDCRS={}
PDCRS.Base = function(){return alert(1)}
PDCRS.Base.prototype.Dao = function(){return alert(2)}


PDCRS.Base.prototype.Dao.saveScore = function(){return alert(3)}
/*
function ConfrontationNaming() {
this.Dao().saveScore();// 能用了
}
*/

ConfrontationNaming = new PDCRS.Base();
document.write(ConfrontationNaming);
ConfrontationNaming.Dao();
ConfrontationNaming.Dao.saveScore();


[解决办法]
var a = new PDCRS.Base();
var b = new a.Dao();
b.saveScore();
你是要这个调用方式么?

读书人网 >JavaScript

热点推荐