javascript - 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>
解决方案
正如 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>
推荐阅读
- amp-html - `amp-list` 文档:src 属性中的 `<%host%>` URL 前缀是什么意思?
- django - 如何在 Django 中创建 pymongo 客户端(使用 uwsgi)
- angular - 构建角度应用程序时如何修复“架构验证错误”
- ruby-on-rails - Rails,ActiveRecord:列名匹配的 has_one
- javascript - 无法让小部件与 TPL 文件一起使用
- contentful - 内容丰富的媒体文件名/扩展名验证
- java - 用于从 sererate JVM 实例调用的重复单元和批处理测试的 Java 配置缓存?
- python - 如何使我的 Python 替换不贪心?
- visual-studio-2010 - Azure DevOps - Visual Studio 2010
- asp.net-mvc - EF Code First:在 Code First 生成后未在 NOT NULL int 列中添加“必需”