将函数名称存储在 JSON 文件中,然后能够从脚本中加载和调用它?

store the name of a function in a JSON file and later be able to load and call it from within a script?

那个标题有点乱码,这可能是重复的,但我已经研究了一段时间。这一定很简单。这个问题的公认答案对我不起作用:How to declare and use the name of a function from a json object?

任务:我正在尝试将 Vis.js 时间线的 set-up 数据外部化到 JSON 文件中。数据集没有问题,除了函数引用 "orderByID" 和 "visTemplate" 之外的所有选项也没有问题。这些是我定义的函数,它们存在于我正在处理 JSON 数据的脚本中。

当我尝试使用 JSON 而不尝试转换它时,Vis.js 抱怨。当我用下面的代码尝试上面问题的答案时,我得到了图像中显示的错误。

这在 Electron 中,脚本正在通过 index.html 中的脚本标签加载。

我等待 one-line 对这个花了很多时间描述的简单问题的回答。


console.log(' timelineOptions.order', timelineOptions.order);
console.log(' timelineOptions.template', timelineOptions.template);
console.log('this', this);
console.log('window', window);

timelineOptions.order = window[timelineOptions.orderByID];
timelineOptions.template = window[timelineOptions.visTemplate];


 "timelineOptions": {
    "order": "orderByID",
    "selectable": true,
    "zoomable": false,
    "width": "100%",
    "height": "90%",
    "minHeight": 700,
    "format": {
        "minorLabels": {
            "hour": "HH\h"
        }
    },
    "margin": {
        "axis": 20,
        "item": 20
    },
    "start": "2016-12-30",
    "end": "2017-01-4",
    "template": "visTemplate",
    "showCurrentTime": false,
    "dataAttributes": "all",
    "timeAxis": { "scale": "day", "step": 1 },
    "orientation": {
        "axis": "top",
        "item": "top"
    }
}

不确定您是否在 window 对象上设置了正确的引用,但您的代码不应该是这样的:

timelineOptions.order = window[timelineOptions.order];

您引用了字符串值 orderByID 而不是您用来设置对象的 属性 名称。