如何去字符串化字符串化 JavaScript?

How to De-Stringify Stringified JavaScript?

如何'de-stringify' JavaScript 字符串化后的代码? JSON.parse 好像不行。我们想将 JavaScript 代码存储在数据库中,然后检索它,然后对其进行评估。这是数据库中的代码:

//# sourceURL=journal.js

function onBlur(e) {

    var drAmount = script.getGridRowFieldValue('debitamount', e.rowuid)
    var crAmount = script.getGridRowFieldValue('creditamount', e.rowuid);

    // Prevent both debit and credit from having values.      
    if (drAmount != undefined && crAmount != undefined) {

        if (e.fieldname == 'debitamount') {
            script.setGridRowFieldValue('creditamount', e, undefined)
        } else if (e.fieldname == 'creditamount') {
            script.setGridRowFieldValue('debitamount', e, undefined)
        }

    }
}

这是返回的内容:

"//# sourceURL=journal.js\r\n\r\nexport function onBlur(e) {\r\n\r\n var drAmount = script.getGridRowFieldValue('debitamount', e.rowuid)\r\n var crAmount = script.getGridRowFieldValue('creditamount', e.rowuid);\r\n\r\n // Prevent both debit and credit from having values. \r\n if (drAmount != undefined && crAmount != undefined) {\r\n\r\n if (e.fieldname == 'debitamount') {\r\n script.setGridRowFieldValue('creditamount', e, undefined)\r\n } else if (e.fieldname == 'creditamount') {\r\n script.setGridRowFieldValue('debitamount', e, undefined)\r\n }\r\n\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n"

参见 eval。它接受一个字符串作为参数,您可以将该字符串传递给它,它应该可以工作。

此外,请阅读并理解其他人和我链接到的文档中提到的警告。

您应该尝试从对象的数据中提取对象的行为。使用 eval 通常是一件坏事,特别是如果您不信任正在解析的字符串。您应该将数据存储为 json,使用数据的函数应该是静态的,并通过原型或类似的东西添加到您的对象中。

你不应该 JSON.stringify javascript 代码,只有 javascript 个数据对象。

看到这个JSON.stringify function

将代码作为字符串保存在您的数据库中。您可能想要混淆 您的代码。 How can I obfuscate (protect) JavaScript?