Javascript:在脚本后附加一个对象,并创建一个本地实例
Javascript: append script with an object, and create a local instance
让我提出我的问题:我有一个主脚本,假设它创建了一个"游戏"对象的实例,该实例根据用户的操作加载许多 javascript 文件之一,我们称它们为"级别":D这些文件包含不同的对象,例如,"level1.js",其中包含级别1的对象,然后是"level2.js"等。
每次加载关卡脚本(例如 level1.js)时,"game" 的实例都会创建对象 level1 的实例并将其存储在局部变量中。
我发现这样做的唯一方法是在所有"级别"脚本的末尾编写一个全局变量,该变量始终具有相同的名称,并且指向当前级别的定义。然后在游戏中,当加载任何关卡脚本时,我使用此全局变量来创建当前关卡的实例。我想知道是否有办法在不使用全局变量的情况下做到这一点。
下面是一个简化的示例:
在游戏中.js:
function Game() {
var levelCurrent = null;
var scriptCour = document.createElement("script");
scriptCur.type = "text/javascript";
scriptCur.onload = function() {
levelCurrent = new level();
}
}
在每个"级别"脚本(级别 1.js、级别 2.js)中:
function level1() {
//definition of the level
//...
}
level = level1;
或者,类似地:
level = function() {
//definition of the level
//...
}
我不知道我是否很好地解释了我的问题,但如果有人有答案......谢谢!请注意,游戏实例是使用自执行函数创建的,因此是一个局部变量,例如:
(function() {
var game = new Game();
})();
谢谢!
与其将新级别分配给全局变量,不如使用级别信息调用全局函数,例如
window.addLevel(function level1() {
//definition of the level
//...
});
为什么您的游戏实例是局部变量,无法访问吗?我想它是一个单例(只有一个实例),因此将其作为全局变量是完全有效的。然后,它将是addLevel函数(window.game.addLevel()
)的一个很好的命名空间。
你可以让主游戏代码公开一个全局函数,比如"startNewLevel"或其他函数,然后不声明全局变量,而是让新关卡将自身传递给该函数。
相关文章:
- 同一项怎么可能在一个实例中未定义,却在另一个实例上定义
- jQuery"焦点”;在一个实例中有效,但在其他实例中无效
- 当与另一个实例进行比较时,我的类实例如何隐式返回数字
- 为什么可以't我使用成员方法初始化一个实例
- 如何使用 JavaScript 正则表达式搜索除一个实例之外的所有内容
- 挖空视图模型函数仅影响最后一个实例
- 插件总是只得到最后一个实例,如何让它适用于多个元素
- arguments变量是的一个实例
- 使用javascript删除特定HTML实体(breadcrumb)的最后一个实例
- jquery获取类的下一个实例的值
- 如何使外部按钮只影响类的一个实例
- javascript中的Ruby插值在两个实例中的一个实例中不起作用
- 剑道网格:在Angular指令中获取一个实例
- 多个 xmlhttp 请求会导致除最后一个实例之外的所有实例的 readystate 都达不到 4
- Wordpress jQuery 脚本不会在具有 jQuery.noConflict 用法的一个实例上启动
- 如何将 url (http://example.com) 的一个实例限制为仅在客户端打开一次
- 在单个页面上使用此.js 2 次时,它仅适用于一个实例
- 查找给定工作日的下一个实例(即.星期一)与时刻.js
- 谷歌地图将边界限制在世界的一个实例中
- CKEditor 一个实例用于多个 ID