我有一部分调试框架需要能够运行时评估对象。具体来说,如果我有一个像这样的字符串"{a:1,b:2}"它需要将它评估为一个包含成员a和b与这些值。但是,如果我执行eval("{a:1,b:2}"),它似乎将其评估为一个语句,并说明了非法标签。我已经破解了它,所以它的评估是这样的:eval("varx="+str+";x;");这似乎有效,但似乎是一个可怕的hack。关于如何更好地做到这一点有什么建议吗?(顺便说一句,我知道eval的危险,但这是调试框架的一部分,实际用户不会看到。) 最佳答案 您可以使用()将其解析为对象,而不是语句,
这个问题在这里已经有了答案:IsitpossibletoadddynamicallynamedpropertiestoJavaScriptobject?(20个答案)关闭6年前。我正在使用这段代码(如下所示)尝试在for循环中填充名为Parameters的对象文字。我需要key:value对与迭代i变量的循环一起分配,例如:{key_1:chunks[1],key_2:chunks[2]}。但是,我的代码不起作用。'key_'+i未反射(reflect)在文字中。显然,我在这里缺少一些东西。谁能告诉我它是什么?...谢谢。varParameters=[];varlen=chunks.l
我在firebug中报告了这个错误,但我不知道它是什么意思:标识符紧接在数字文字之后开始这是我的网页:http://www.austintreeexperts.com/maps/optionUpdateMap.cfm?zoom=15加载页面和map后,单击蓝色或绿色标记之一。然后单击其中一个复选框以获取错误。我有一个用于输入复选框的onclick=。 最佳答案 您的字符串连接已损坏。您需要将方法参数用引号引起来varstatusForm='optionA|optionsB';Fromhere---------------------
我在这里浏览源代码:http://js-dos.com/games/doom2.exe.html并注意到一些事情:if(typeofModule==='undefined'){Module=eval('(function(){try{returnModule||{}}catch(e){return{}}})()');}Module函数是用内联脚本标记定义的稍后在另一个内联标签中用var再次声明,这次它检查模块是否存在。我的问题:如果它只会尝试再次返回模块,那么用自调用函数声明模块有什么意义?不是已经被证明不存在了吗?为什么不直接将Module显式声明为{}?
我想允许用户在文本输入中执行简单的计算,这样键入2*5的结果将是10。我将除数字以外的所有内容替换为空字符串,然后使用eval()进行计算。与手动解析相比,这似乎更容易并且可能更快。人们常说eval()是不安全的,所以我想知道在这种情况下使用它是否有任何危险或缺点。function(input){value=input.value.replace(/[^-\d/*+.]/g,'');input.value=eval(value);} 最佳答案 那是安全的,不是因为您正在净化它,而是因为它全部由用户输入并在他们自己的浏览器中运行。如果
我在JSLint中看到过这条消息...document.writecanbeaformofeval.并想知道到底是怎么回事?JSLintinstructions页面状态:Theevalfunction...provideaccesstotheJavaScriptcompiler.Thisissometimesnecessary,butinmostcasesitindicatesthepresenceofextremelybadcoding....那么,document.write如何“提供对JavaScript编译器的访问”呢?谢谢 最佳答案
我正在开发一个网络应用程序来教授编程概念。网页有一些关于编程概念的文本,然后让用户在文本编辑器窗口中输入javascript代码以尝试回答编程问题。当用户点击“提交”时,我会分析他们输入的文本,看看他们是否已经解决了问题。例如,我要求他们“编写一个名为f的函数,将其参数加三”。以下是我正在做的分析用户文本的工作:在具有严格设置的文本上运行JSLint,尤其是在不假设浏览器或控制台功能的情况下。如果有任何错误,显示错误并停止。eval(usertext);遍历传递赋值的条件,eval(condition)。示例条件是"f(1)===4"。条件来自可信来源。显示通过/未通过条件。我的问题:
使用manifest_version:2的GoogleChrome扩展被限制使用eval或newFunction。我检查过的所有JavaScript模板库(mustachejs、underscorejs、jQuery模板、hoganjs等)都使用newFunction。是否有任何不使用两者的相当成熟和受支持的?Infoaboutthesecurityrestrictions. 最佳答案 事实证明,mustachejs最近添加了newFunction并且使用了tag0.4.2没有它。它的API与Mustache.to_html而不是M
在下面的示例中,当functionA()被调用时,this关键字引用包含对象,因此我可以访问它的属性(例如theValue)我的问题:如何从nestedfunctionB()中引用myObj的属性?varmyObj={theValue:"TheraininSpain",functionA:function(){alert(this.theValue);},moreFunctions:{functionB:function(){alert(????.theValue);}}}myObj.functionA();myObj.moreFunctions.functionB();提前致谢。
我们想让我们的用户能够在我们的应用程序中执行自己创建的JavaScript代码。为此,我们需要使用eval来评估代码。为了将所有安全问题降至最低(如果不是零),我们的想法是防止在代码中使用任何window或document函数。所以没有XMLHttpRequest或类似的东西。这是代码:functionsecure_eval(s){varret;(function(){varcopyXMLHttpRequest=XMLHttpRequest;//saveorginalfunctionincopyXMLHttpRequest=undefined;//makeorignalfunction