我正在尝试在同一个对象内调用 getQuestions()
,它是一个方法。但是当我尝试读取 quizz.config.allQuestions 属性时,我收到一条错误消息“Uncaught TypeError: Cannot read property 'getQuestions' of undefined.”。我在这里缺少什么吗?
var quizz = {
config: {
urlJSON: 'questions.json',
allQuestions: quizz.getQuestions()
},
getQuestions: function() {
$.getJSON(quizz.config.urlJSON, function(questions) {
return questions;
});
}
};
最佳答案
当您尝试分配给 allQuestions
时,quizz
对象尚未完成初始化。因此,您必须在创建对象后执行此操作。
var quizz = {
config: {
urlJSON: 'questions.json'
// don't declare allQuestions
},
getQuestions: ...
};
quizz.allQuestions = quizz.getQuestions();
that 的问题在于 $.getJSON
是一个异步函数,这意味着它不会立即返回该值。这就是为什么它有一个回调。相反,您可以尝试像这样定义 getQuestions
:
getQuestions: function(callback) {
$.getJSON(quizz.config.urlJSON, callback);
}
然后你可以得到这样的值:
quizz.getQuestions(function(questions) {
quizz.config.allQuestions = questions;
});
关于javascript - 在对象内调用对象方法——错误: cannot read property of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35304557/