javascript - 在对象内调用对象方法——错误: cannot read property of undefined

标签 javascript methods error-handling

我正在尝试在同一个对象内调用 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/

相关文章:

php - 使用 PHP 变量填充文本字段

javascript - 是什么触发 webRTC API 连接到 stun 服务器

python - 类方法和属性的命名约定

c# - .net核心Web API- Controller 可以将参数传递给中间件吗?

javascript - 如何使用 Bootstrap 和 Javascript 渲染 Word 文档

java - 如何覆盖java类中的单个方法

java - 测试表示一系列位的两个字符串的字符

error-handling - 绕过Play的HttpErrorHandler处理4xx错误

c# - 如何在C#中从SQL Server获得唯一值

javascript - 通过JSON技术扫描