【发布时间】:2014-06-04 11:37:07
【问题描述】:
我正在尝试制作一个由多个类继承的父数据访问层类。
父类:
var DataAccess = function() {
this.Save = function(){
alert(this.ListName); //works
SaveLogic(this.Id); //doesnt work
}
}
儿童班:
var Job = function(){
Job.prototype.ListName = 'MyList'; //works
this.Save = function(){
Job.prototype.Save().call(this);
//specific Job Save logic
}
}
Job.prototype = new DataAccess();
现在在我的主要课程中:
var aJob = new Job();
aJob.Id = 1;
aJob.Save(); //Does not work. Prototype can not see aJob.Id..
如您所见,我需要创建一个带有ID等共享变量的父函数,所以当我继承父类时,我可以为这些变量赋值,这样hte父类的共享逻辑就可以工作,然后我的扩展类可以有特定的逻辑
【问题讨论】:
-
永远不要在构造函数中向原型添加方法。
-
您的代码 sn-p 要么不完整,要么您忘记让 Job 原型继承自 DataAcess。无论哪种方式,您的 sn-p 都表明您对 javascript 中原型继承的工作原理知之甚少。
-
我忘了在 sn-p 中添加一行。
-
省略
Job.prototype.Save().call中的括号。 -
SaveLogic(this.Id)应该做什么?因为SaveLogic没有定义,所以它不起作用吗?或者什么不起作用?
标签: javascript inheritance prototype