首页 > 解决方案 > JavaScript 不是函数

问题描述

我正在尝试编写以下内容,以便我可以通过调用来启动游戏,Game.init()但我不断收到:

未捕获的类型错误:Game.init 不是函数

var Game = function() {
  return {
    init: function(url) {
      $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function(response) {
          console.log(response);
        }
      });
    },
    success: function(response) {
      console.log(response);
    }
  }
}

$(function() {
  Game.init('./file.json');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

标签: javascript

解决方案


正如 VLAZ 指出的那样,它必须是Game().init(),否则您可以立即调用函数表达式

var Game = (function() {
  return {
    init: function(url) {
      console.log('test')
      $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function(response) {
          console.log(response);
        }
      });
    },
    success: function(response) {
      console.log(response);
    }
  }
}())

$(function() {
  Game.init('./file.json');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>


推荐阅读