如何执行在JS函数中作为字符串传递的函数调用,没有eval

How to execute function calls that passed in JS function as string without eval?

本文关键字:字符串 函数调用 eval 没有 何执行 执行 函数 JS      更新时间:2023-09-26

我认为这有点不寻常,但这就是我的想法。我有一个。net应用程序,生成html + js页面。我有一个叫做Unit的东西,它是不同html元素的集合,有人工事件的onload和onunload。

function DisplayableUnit(content, onload_js, onunload_js)
{
    this.onload_js = onload_js; //different functions calls like "f1(); f2();"
    this.onunload_js = onunload_js;
    this.content = content; //string of html tags
}
function loadUnitTo(elem_id, unit)
{
    var elem = document.getElementById(elem_id);
    if (elem)
        elem.innerHTML = unit.content;
    if (unit.onload_js)
        ;//how to execute it?
}

许多网站说eval是坏的和不安全的东西。但这是唯一的选择吗?我需要纯JS解决方案没有任何第三方的东西。

您可以像这样将其作为函数执行:

var theInstructions = "alert('Hello World'); var x = 100",
    F=new Function (theInstructions);
return(F());