在JavaScript中使用类的原型

时间:2017-02-09 01:54:08

标签: javascript

是否有理由在课程上使用原型?如果我理解正确的话,如果我在构造函数中定义了函数,原型会更有效(但这不是这里的情况)。这些实现语法之间唯一不同的是什么?

    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++;
}

1 个答案:

答案 0 :(得分:2)

ES6课程只不过是糖。你的两个例子是等价的。

关于在构造函数中声明的函数 - 你说这些函数效率会稍差。如果在构造函数中设置'this.foo = function(){}',则每次使用构造函数进行实例化时都会创建一个新函数。