Javascript:用一个对象 append 脚本,并创建一个本地实例

标签 javascript scope append global local

说一下我的问题: 我有一个主脚本,假设它创建了一个“游戏”对象的实例,根据用户的操作,它加载了许多 javascript 文件之一,我们称它们为“级别”:D 这些文件包含不同的对象,例如,包含 level1 对象的“level1.js”,然后是“level2.js”等。

每次加载关卡脚本时,例如 level1.js,“game”的实例都会创建对象 level1 的实例并将其存储在局部变量中。

我找到的唯一方法是在所有“级别”脚本的末尾编写一个全局变量,它始终具有相同的名称,并指向当前级别的定义.然后在游戏中,当加载任何关卡脚本时,我使用这个全局变量来创建当前关卡的实例。我想知道是否有一种不使用全局变量的方法。

这是一个简化的例子:

在 game.js 中:

function Game() {
    var levelCurrent = null;
    var scriptCour = document.createElement("script");

    scriptCur.type = "text/javascript";
    scriptCur.onload = function() {
         levelCurrent = new level();
    }
}

并且在每个“关卡”脚本中(level1.js、level2.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
    //...
});

为什么你的Game实例是局部变量,不能访问?我想这是一个单例(只有一个实例),所以将它作为一个全局变量是完全有效的。它将成为 addLevel 函数的良好命名空间 (window.game.addLevel())。

关于Javascript:用一个对象 append 脚本,并创建一个本地实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10883955/

相关文章:

node.js - "describe"和 "it"语句内的变量范围

javascript - 使用 Function.prototype.apply 设置 javascript 回调范围

jquery - 尝试在 easySlider 轮播中显示所有图像的替代文本

javascript - JS星级如何获取MYSQL的<span>值?

javascript - javascript 递增字符串数字

javascript - 正则表达式查找具有给定属性的 React JSX 元素?

Jquery追加到表TR

javascript - Jquery AJAX 替换为 Vanilla js 难度

c++ - 在全局/函数范围内声明变量。堆栈差异?

java - 如何 append 变量 ID - AndroidX