日期:2014-05-16  浏览次数:20568 次

请教一个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)}