Javascript 我正在使用level maker生成的代码预览制作一个level maker,我如何才能做到这一点?

Javascript 我正在使用level maker生成的代码预览制作一个level maker,我如何才能做到这一点?,javascript,Javascript,我做了一个水平发生器。基本上,有一个3×20的正方形网格,你可以选择其中一个,这取决于你点击按钮生成它时选择的内容,并将一些代码生成一个可变字符串。它工作得非常完美,但我接下来如何获得生成的代码并将其转化为预览呢 到目前为止,我发现使用关键字eval,但这只做最后一行?有什么想法吗 以下是布局的图片: 我最初必须检测的代码是: if (container.childNodes[index].innerText == 'pos3') { if (container.chi

我做了一个水平发生器。基本上,有一个3×20的正方形网格,你可以选择其中一个,这取决于你点击按钮生成它时选择的内容,并将一些代码生成一个可变字符串。它工作得非常完美,但我接下来如何获得生成的代码并将其转化为预览呢

到目前为止,我发现使用关键字eval,但这只做最后一行?有什么想法吗

以下是布局的图片:

我最初必须检测的代码是:

    if (container.childNodes[index].innerText == 'pos3') {
        if (container.childNodes[index].id == '1 second') {
            text = text + '\n' + 'cube1 = new theCubeCreator(pos3, 0, 2, 1000),'
            //amtselected = amtselected + 1 
        }....
那样的话,我会把它和这个捆绑在一起

    var pos1 = 125 //middle
    var pos2 = 70 //left
    var pos3 = 180 //right
    text = text + '\n' + 'cube1 = new theCubeCreator(pos2, 0, 2, 1000)' // Must add this to make it a end
    var evaluation = eval(text)
    console.log(evaluation);

很抱歉,如果这很难阅读,或者如果您希望我发送示例。

您所做的是错误的做法。您应该创建一个保存函数的对象和一个将对象和对象转换为函数的生成器函数

//要运行的函数/类的对象 风险值数据={ 名称:console.log, isClass:错, 参数:[pos2,0,2,1000], }; var domParse={ 名称:DOMParser, 是的, params:[Hello World,text/html], }; var funcs={ DOMParser:args=>{ constdom=新的DOMParser; 返回dom.parseFromString…args; }, console.log:args=>console.log…args, }; //函数从对象生成函数。 函数生成{name,isClass,params}{ 返回funcs[name]参数; } 生成数据;//控制台。日志的位置为2 0 2 1000 生成的压缩;//创建DOM对象
我采取了另一种方法而不是很好地评估我仍然使用评估。我所做的是,让一个变量let text=然后添加到该变量上,这样做就像text=text+\n+'…' 这已经很糟糕了,所以我采取了不同的方法。我所做的所有更改都是使用数组来存储代码,而不是使用字符串变量。像这样清除它,让text=[]然后使用push向其中添加代码,比如text.pusheval


这就是我为解决我的问题所做的,如果您有任何其他方法或其他更好的方法,并且是的,我知道这很混乱,请评论:

您应该始终避免使用eval。但是,如果必须使用eval,则应使用新函数。。。相反。@mario_sunny像这样吗?var evaluation=new Functionevaltext这会产生[object object]错误或意外标识符。因此,它生成了这个匿名函数{[object]}const executable=new Functiontext;。然后可以通过调用函数:executable来执行动态代码。但是,我正在查看您的代码,没有看到动态代码执行的理由。为什么不把这个逻辑表达成一个简单的Javascript函数呢?@mario_sunny我能添加这样的参数吗?常量求值=新函数POS1、pos2、pos3、文本。我试了一下,它出现了一个错误,说意外的数字?使用函数ANNOMANYOUS125,70180的输出{//这里的代码看起来有效}请参阅MDN文档:。函数构造函数将数量可变的参数名作为第一个参数。因此,您可以执行const executable=新函数'param1','param2',text之类的操作,然后调用executablearg1,arg2之类的可执行文件。您可以将其显示为代码吗?