是否有理由在课程上使用原型?如果我理解正确的话,如果我在构造函数中定义了函数,原型会更有效(但这不是这里的情况)。这些实现语法之间唯一不同的是什么?
class Quiz {
constructor(questions) {
this.score = 0;
this.questionArray = questions;
this.questionIndex = 0;
}
getCurrentQuestionObj() {
return this.questionArray[this.questionIndex];
}
isGameOver() {
return this.questionArray.length === this.questionIndex;
}
guess(answer) {
if(this.getCurrentQuestionObj().isCorrectAnswer(answer)) {
this.score++;
}
this.questionIndex++;
}
}
-
function Quiz(questions) {
this.score = 0;
this.questions = questions;
this.questionIndex = 0;
}
Quiz.prototype.getCurrentQuestionObj = function() {
return this.questions[this.questionIndex];
}
Quiz.prototype.isGameOver = function() {
return this.questions.length === this.questionIndex;
}
Quiz.prototype.guess = function(answer) {
if(this.getCurrentQuestionObj().correctAnswer(answer)) {
this.score++;
}
this.questionIndex++;
}
答案 0 :(得分:2)
ES6课程只不过是糖。你的两个例子是等价的。
关于在构造函数中声明的函数 - 你说这些函数效率会稍差。如果在构造函数中设置'this.foo = function(){}',则每次使用构造函数进行实例化时都会创建一个新函数。