我有一个叫做问题的课程。我试图通过创建其correspoding对象从另一个类调用此显示方法。但是我得到了这个错误。如果你能帮助我,我会很高兴的。
///////////////QUESTION///////////////
function Question(id, text){
this.id = id;
this.text = text;
}
function QType1(id, text, choices, answers){
//this is true or false
Question.call(this, id, text) ;
this.choices = choices;
this.answers = answers;
}
QType1.prototype = new Question();
//inherit Question
QType1.prototype.constructor = QType1;
QType1.Display = function(){
console.log("Display Question");
}
///////////////QUIZ//////////////////
function quiz(){}
quiz.prototype.SetHomeScreen = function(x,y){
var svgCanvas = CreateCanvas(x,y);
AddText(svgCanvas,100,50, quiz_input.Settings.Layout.Text);
console.log("Text Added");
start_but = AddStartButton(svgCanvas, 300, 250);
console.log("start button Added");
start_but
.on("click", function(d,i) {
startquiz();
});
var startquiz = function(){
console.log(this);
quiz.prototype.StartQuiz();
};
}
quiz.prototype.question_objs = [];
quiz.prototype.user_ans = [];
quiz.prototype.corr_ans = [];
quiz.prototype.LoadQuestions = function(){
for(var i=0, l=questions.length; i<l; i++){
this.question_objs.push(new QType1(questions[i].id, questions[i].settings.text, questions[i].settings.choices, questions[i].settings.answers));
}
console.log(this.question_objs);
}
quiz.prototype.DisplayQuestions = function(){
var i = 0;
var l = this.question_objs.length;
while(i < l){
console.log(this.question_objs[i] instanceof QType1);
this.question_objs[i].Display();
}
}
quiz.prototype.StartQuiz = function(){
quiz.prototype.LoadQuestions();
console.log("Starting Quiz");
quiz.prototype.DisplayQuestions();
}
我得到的错误信息是。 在此先感谢
答案 0 :(得分:1)
两个可能的原因:
function Qtype1() {}
和var q = new Qtype1()
编辑 :您没有使用显示QType1的方法。
您可以使用QType1.Display
方法的唯一方法是将QType1
声明为变量,例如var QType1 = {}
这样你就可以将Display方法直接绑定到变量上。但是,当您将其声明为构造函数时,您需要QType1.prototype.Display = function () { console.log('Display question...'); };
另外 - 你的继承有点乱。您正在调用Question.call(this, id, text)
,然后您声明QType1.prototype = new Question()
,然后对构造函数执行相同的操作。您需要稍微检查一下您的javascript原型继承理论。