Javascript类构造的对象未定义
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
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()在哪里?我错了。我的意思是打印(),不是打印所有问题()