Javascript 在对象内调用对象方法—;错误:无法读取未定义的属性
我试图在同一个对象内调用Javascript 在对象内调用对象方法—;错误:无法读取未定义的属性,javascript,methods,error-handling,Javascript,Methods,Error Handling,我试图在同一个对象内调用getQuestions(),它是一种方法。但是,当我尝试读取quizz.config.allQuestions属性时,会收到一条错误消息,内容为“UncaughtTypeError:无法读取undefined的属性'getQuestions'。这里缺少什么吗 var quizz = { config: { urlJSON: 'questions.json', allQuestions: quizz.getQuestions()
getQuestions()
,它是一种方法。但是,当我尝试读取quizz.config.allQuestions属性时,会收到一条错误消息,内容为“UncaughtTypeError:无法读取undefined的属性'getQuestions'。这里缺少什么吗
var quizz = {
config: {
urlJSON: 'questions.json',
allQuestions: quizz.getQuestions()
},
getQuestions: function() {
$.getJSON(quizz.config.urlJSON, function(questions) {
return questions;
});
}
};
当您试图分配给
所有问题时,测验对象尚未初始化。因此,您必须在创建对象后执行此操作
var quizz = {
config: {
urlJSON: 'questions.json'
// don't declare allQuestions
},
getQuestions: ...
};
quizz.allQuestions = quizz.getQuestions();
但是,的问题是,$.getJSON
是一个异步函数,这意味着它不会立即返回该值。这就是为什么它有一个回调。相反,您可以尝试这样定义getQuestions
:
getQuestions: function(callback) {
$.getJSON(quizz.config.urlJSON, callback);
}
quizz.getQuestions(function(questions) {
quizz.config.allQuestions = questions;
});
然后可以得到如下值:
getQuestions: function(callback) {
$.getJSON(quizz.config.urlJSON, callback);
}
quizz.getQuestions(function(questions) {
quizz.config.allQuestions = questions;
});
变量quizz
在计算(整个)文本之前是未定义的。在计算整个对象文字之前,所有属性都不存在(以可以引用的方式),因此在初始化过程中,您不能将任何属性设置为等于其他属性的结果。