Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何用简单函数替换新函数(字符串)构造函数_Javascript_Function_Security_Constructor_Owasp - Fatal编程技术网

Javascript 如何用简单函数替换新函数(字符串)构造函数

Javascript 如何用简单函数替换新函数(字符串)构造函数,javascript,function,security,constructor,owasp,Javascript,Function,Security,Constructor,Owasp,我想知道,如果这不是一个重复的问题,那么如何将使用function()构造函数创建的函数转换为一个简单的函数呢。为了更好地解释这个问题,我将举一个例子: function foo() { var funcString = "console.log('hello'); var x = document.getElementById('content-1x');" obj.assignFunction = new Function(fu

我想知道,如果这不是一个重复的问题,那么如何将使用function()构造函数创建的函数转换为一个简单的函数呢。为了更好地解释这个问题,我将举一个例子:

    function foo() {
       var funcString = "console.log('hello'); var x = document.getElementById('content-1x');"
           obj.assignFunction = new Function(funcString);
    }
在本例中,funcString是作为字符串传递给的函数

乍一看,这一切似乎都很简单,因为您只需将代码行放入一个匿名函数中,该函数被分配给obj.assignFunction,如下示例所示:

function foo(){
  obj.assignFunction = function(){
    console.log('hello');
    var x = document.getElementById('content-1x')
  }
}
但我的问题是,我从HTML元素的属性中获取函数字符串,它可能会在其他页面中更改。 例如,可以从这些HTML文件中获取functionString

<span id="elem1" functionString="console.log('hello'); var x = 3*3">

如您所见,函数字符串可以更改。 为了不被分散,我最后提出了一个确切的问题:


可以用Function(){//functionString转换为代码行}替换新函数(functionString)构造函数。如果functionString可以基于元素属性“functionString”?

我从HTML元素的属性获取函数字符串,这真的很奇怪。如果一种不同的方法是可行的,那么你的代码库会更好。“肯定的是,这是一个旧代码,我不能从头开始改变,不破坏所有的应用程序:(所以,为了掩盖风险,我可以把新的函数()转换成函数({ })。。或者,如果存在其他方法,它肯定会更好,但我没有想到您可以存储函数字符串(或从中定义的函数)在这个地方,使用存储的版本。如果HTML属性改变了,你的存储拷贝就不会受到影响。我从HTML元素的属性中获取函数字符串。这真的很奇怪。如果一种不同的方法是可行的,那么你的代码库会更好。ge从头开始,不要对所有应用程序吹嘘:(因此,为了弥补风险,我可以将“new Function()”转换为Function(){}。或者,如果存在其他方法,它肯定会更好,但我没有想到您可以存储函数字符串(或从中定义的函数)我们的想法是,如果HTML属性发生更改,您存储的副本将不受影响。