javascript - 在 JS 中动态创建函数

标签 javascript

我正在为 JS 游戏创建 AI 引擎,它由有限状态机组成。我正在从 XML 加载状态数及其变量值。我还想加载该行为,并且由于我没有时间创建脚本语言,所以我认为在外部文件(XML 节点内)上“插入”JS 代码并在需求。

类似的事情

<evilguy1>
    <behaviour>
        this.x++;
    </behaviour>
    <behaviour>
        this.y++;
    </behaviour>
</evilguy1>

类似的事情:

function behaviour_1(){
    this.x++;
}
function behaviour_2(){
    this.y++;
}

我的问题是,现在我已经加载了代码,我该如何执行它?我想为每个代码“节点”创建一个具有唯一名称的函数,然后从游戏逻辑中调用它们,但我不知道这是否可能(因为您可以从 HTML 加载更多 JS 代码,所以您应该也可以从 JS 代码中完成,不是吗?)。如果没有的话有类似的解决方案吗?提前致谢!

(PS:外部库依赖越少越好)

编辑1:

好的,现在我知道如何创建函数来包含代码

window[classname] = function() { ... };

最佳答案

那么,您可以使用 Function 构造函数,如下例所示:

var f = new Function('name', 'return alert("hello, " + name + "!");');
f('erick');

这样,您就可以使用参数和函数体定义一个新函数,并将其分配给变量 f。您可以使用哈希集并存储许多函数:

var fs = [];
fs['f1'] = new Function('name', 'return alert("hello, " + name + "!");');
fs['f1']('erick');

加载 xml 取决于它是在浏览器还是服务器上运行。

关于javascript - 在 JS 中动态创建函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20129236/

相关文章:

javascript - VueJS - 在回调中为 this.property 赋值

javascript - 数组未分配给变量?它是如何工作的以及它到底在做什么?

javascript - Window.open 最大化时在 Safari 中打开新选项卡

javascript - 如何找到文本容器中最后一个可见单词的位置?

javascript - 我如何限制 javascript 函数允许自身被调用的速度?

javascript - 如何让选择器在 React 中处理问答游戏?

javascript - CycleDOM 条件渲染问题

javascript - 从 IntelliJ 中的 console.log 获取更多详细信息

javascript - 如何使用 React 测试库测试 HTML 内容

javascript - 单击更改图像集 - Fotorama