Javascript 从JSON对象引导到字符串的解析设置不是函数

Javascript 从JSON对象引导到字符串的解析设置不是函数,javascript,json,Javascript,Json,因此,我为我的项目提供了这个JSON对象。它包含多个设置,有些是字符串,有些是布尔值 但是,我无法执行一件事,即从存储在变量中的对象添加动画名称 aniFx.move(inner, { duration: 1, delta: aniFx.ease.bouncePast }); 解释 Inner: document.getElementById('inner'); Duration: time multiplied by 1000 in my animation script (

因此,我为我的项目提供了这个JSON对象。它包含多个设置,有些是字符串,有些是布尔值

但是,我无法执行一件事,即从存储在变量中的对象添加动画名称

aniFx.move(inner, {
    duration: 1,
    delta: aniFx.ease.bouncePast
});
解释

Inner: document.getElementById('inner');
Duration: time multiplied by 1000 in my animation script (aniFx)
Delta: Animation used for moving the inner element
现在我已经解释过了,在我尝试从JSON对象设置
delta
之前,它工作得非常好。 就这个问题而言,假设我的JSON对象只包含以下内容:

_userObj = JSON.parse('{ "137340": { "effect": "aniFx.ease.swingTo" } }');

现在,我为什么不能这样做,例如:

aniFx.move(inner, {
    duration: 1,
    delta: _userObj['137340'].effect
});
当我触发函数时,我将得到以下错误

控制台将返回:

console.log => aniFx.ease.swingTo
aniFx.move => Uncaught TypeError: string is not a function

不能将函数打包为JSON

_userObj['137340'].effect

计算结果仅为一个字符串(“aniFx.ease.swingTo”),您尝试将其作为增量传递,然后在执行aniFx.move时尝试将其作为函数调用。

“aniFx.ease.swingTo”是一个字符串。它不会自动作为表达式计算。@Barmar,有没有办法解决这个问题并将其变成函数?有没有办法解决这个问题?我什么都不想,像这样的东西也行。因此,您可以将其传递给move函数:window[_userObj['137340'].effect]不幸的是,在我的情况下不是这样:-/!Uncaught TypeError:undefined不是仅当值是全局变量而不是表达式时才起作用的函数。您需要使用
eval()
,尽管它有各种危险。因为它不是全局性的,如果只有少数可能的值,您可以使用开关结构来匹配字符串,并在匹配点上匹配该函数,如:case“aniFx.ease.swingTo”:effect=aniFx.ease.swingTo;然后将效果传递给移动函数。