【发布时间】:2012-06-06 16:21:19
【问题描述】:
我正在为非程序员创建一个 API,以便为虚拟多人战斗机器人竞技场编写第三方代码。使用全局变量的语法会很好:
function Step() {
if (sensor.wall) {
movement.brake();
movement.turnLeft();
}
if (sensor.enemy) {
movement.shoot()
}
if (movement.speed < 1) {
movement.accelerate(.1);
}
}
上例中的全局变量为sensor 和movement。剧本作者不在乎它们来自哪里,只关心它们是可访问的。 (不,这不是最终的语法。这里只是原型。)
脚本将在客户端(浏览器)和服务器(通过 Node 或 Spidermonkey)上运行。
那么,如何做到这一点?看来我的选择是:
- 按词法设置所有全局变量,然后
eval()脚本(但这很糟糕,对吧?) - 在全局范围内设置所有全局变量,然后正常运行脚本(但是 DOM 全局变量呢,比如
window?)
我可能可以使用Google Caja 保护全局范围。我还希望它具有高性能,因为在同一台服务器上每秒会运行许多 Step() 函数。
【问题讨论】:
-
在您的示例中根本不清楚什么应该是“全局的”,什么不是。也不清楚这段代码在什么上下文中运行 - 服务器?客户?两者都有?
-
已更新。谢谢指点。
标签: javascript api security