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
在计算(整个)文本之前是未定义的。在计算整个对象文字之前,所有属性都不存在(以可以引用的方式),因此在初始化过程中,您不能将任何属性设置为等于其他属性的结果。