我正在尝试制作一个通用的桌面 RPG 助手网络应用程序。它必须是通用的,因为威世智非常保护他们的版权。因此,为了避免停止,系统必须能够加载任意规则。也就是说,我和我的好友(以及大多数其他用户)将使用它进行 D&D。
在 D&D 中,修饰符基于 Angular 色的统计数据。要获得修正值,您需要获取统计数据,减去 10,除以 2,然后向下舍入。
function getModifier(statValue) {
return Math.floor((statValue - 10) / 2);
}
我的应用程序将能够从 .json 文件加载游戏规则。我希望能够使这个修饰符函数可由用户定义。最简单的方法是仅使用 eval()
他们在 .json 文件中提供的任何内容,但由于安全问题,显然这是一个糟糕的主意。
不幸的是,我想不出一种简单的方法来安全地解决这个问题。显然我可以编写自己的解析器,但这比我想要的/目前能够做到的要复杂。
想法?
最佳答案
我快速进行了谷歌搜索,发现了两个选项 - http://mathjs.org和 http://jsep.from.so
顺便说一句。编写自己的解析器并不那么困难。您也许可以用不到 100 行代码编写一个足以满足您的目的的代码关于javascript - 如何避免在用户定义函数中使用 JavaScript eval(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30036442/