Javascript类构造的对象未定义

Javascript类构造的对象未定义,javascript,class,Javascript,Class,JavaScript的新特性。有人能帮我理解为什么调用print()返回未定义的结果吗 class Quizer { constructor(quizObj) { this.quiz = quizObj; } print() { console.log(quiz.title); } }; var quizObjects = { title: "Quiz1" }; 构建: var quiz = new Quizer(quiz

JavaScript的新特性。有人能帮我理解为什么调用
print()
返回未定义的结果吗

class Quizer {
    constructor(quizObj) {
        this.quiz = quizObj;
    }
    print() {
        console.log(quiz.title);
    }
};
var quizObjects = {
    title: "Quiz1"
};
构建:

var quiz = new Quizer(quizObjects);
quiz.print(); //undefined

代码的问题是

class Quizer {
    constructor(quizObj) {
      this.quiz = quizObj;
    }
    print() {
      console.log(quiz.title);
      //You are not using the `this` context here to access the quiz
      //you have a variable quiz outside the class declaration that points the instance of this class.
     //That will get hoisted and will be accessed here.

    }
};

var quizObjects = { title: "Quiz1" };
var quiz = new Quizer(quizObjects);
quiz.printAllQuestions(); //undefined
//--------^^^^ printAllQuestions is not a member function of Quizer
解决方案:

class Quizer {
    constructor(quizObj) {
      this.quiz = quizObj;
    }
    print() {
      console.log(this.quiz.title);
    }
};

var quizObjects = { title: "Quiz1" };
var quiz = new Quizer(quizObjects);
quiz.print(); //Quiz1

如果您还不太熟悉类语法,那么下面的内容也应该适用

Quizer = function (quizObj) {
    this.quiz = quizObj;
};
Quizer.prototype = {
    print: function () {
        console.log(this.quiz.title);
    }
}
var quizObjects = { title: "Quiz1" };
var quiz = new Quizer(quizObjects);
quiz.print();

printAllQuestions()在哪里?我错了。我的意思是打印(),不是打印所有问题()