gpt4 book ai didi

Javascript:如何从字符串数据动态构建方法?

转载 作者:行者123 更新时间:2023-11-29 17:25:03 25 4
gpt4 key购买 nike

我有一个定义任务的 XML 文档,它是要对特定数据执行的操作的列表。我需要将此“任务列表”转换为可以在稍后调用的 Javascript 方法,该方法又会使用适当的数据调用一系列预定义的方法。你将如何实现这一目标?

重要说明:
我不担心 XML 解析。我更感兴趣的是如何实际构建任务方法,包括将基本数据绑定(bind)到预定义的操作方法。这就是我正在努力解决的问题。

编辑:我修改了我的例子,让它更有趣一点,希望更清晰一点。

XML:

<task id="enter-castle">
<if holding="castle-key">
<print message="You unlock the castle door and enter." />
<destroy item="castle-key" />
<goto location="castle" />

<else>
<print message="The castle door is locked." />
</else>
</if>
</task>

Javascript:

Game = {

print: function(message) {
// display message
},

destroy: function(item) {
// destroy the object
},

goto: function(location) {
// change player location
},

ifHolding: function(item) {
// return true if player has item
}
};

parseTask(taskNode) {

var taskId = taskNode.getAttribute('id');

// What goes here??

Game.tasks[taskId] = /* ??? */;
}

当我调用 parseTask()<task id="enter-castle"> 上节点,这应该创建一个函数,实际上在调用时执行以下操作:

Game.tasks.enterCastle = function() {
if (Game.ifHolding('castle-key')) {
Game.print("You unlock the castle door and enter.");
Game.destroy('castle-key');
Game.goto('castle');
} else {
Game.print("The castle door is locked.");
}
}

最佳答案

你要的是closures .

function createMethod(arguments) {
var task = doSomethingWithYour(arguments);
return function(xmlData) { // <- this is the fundamental part
// do the task with your data
// the "task" vars are still available
// even if the returned function is executed in a different context
}
}

这允许您为每个任务创建自己的方法。不要使用 Function 构造函数或 eval。

关于Javascript:如何从字符串数据动态构建方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522357/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com