在 SQL 数据库中存储带有函数的 Javascript 对象

Storing Javascript object with functions in an SQL database

本文关键字:函数 Javascript 对象 SQL 数据库 存储      更新时间:2023-09-26

我正在开发一个javascript菜单(使用jQuery(。

例如,下面是我将传递给自定义函数的 items 对象的结构,该函数随后创建菜单。

var items = {
    0: {
        name: 'file',
        submenu: {
            0: {
                name: 'open',
                hasSubitems: true,
                subitems: {
                    0: {
                        name: 'file',
                        hasSubitems: false,
                        callback: function() { alert('you opened a file!'); }
                    },
                    1: {
                        name: 'project'
                        hasSubitems: false,
                        callback: function() { alert('you opened a project!'); }
                    }
                }
            },
            1: {
                name: 'exit',
                hasSubitems: false,
                callback: function() { alert('you logged out!'); }
            }
        }
    },
    1: {
        name: 'edit',
        submenu: {
           ...
        }
    }
}

我希望能够将上述内容存储到数据库中,包括它们的潜在回调。我打算创建一个界面来动态构建菜单等。

我意识到我可以创建一个 JSON 字符串并以这种方式存储它,但是回调函数呢?我被建议不要多次使用eval,那么人们可以通过哪些其他方式安全地将这些信息存储在数据库中,以便以后调用?

JSON 是语言中立的(尽管名称如此(,因此它只支持原始值。 回调函数是特定于语言的(在本例中为 javascript(,因此它们不能包含在需要解释为纯 JSON 的任何内容中。

我建议从这里提取回调代码,而是包含区分每个回调代码所需的必要参数。 然后,通过 JS 模板引擎(如 Handlebars.js(使用辅助函数而不是回调运行此 JSON 对象。 可以使用用于替换(现在有效的(JSON 对象中的回调函数的参数调用这些参数。