eval() 是您需要执行此操作的函数,但我建议您尝试其中之一以尽量减少 eval 的使用。希望其中之一对您有意义。
存储函数
将函数存储为函数,而不是字符串,稍后将其用作函数。您实际存储函数的位置取决于您。
var funcForLater = clickedOnItem;
// later is now
funcForLater(t.parentNode.id);
或者
someObject.funcForLater = clickedOnItem;
// later is now
(someObject.funcForLater)(t.parentNode.id);
存储函数名称
即使您必须将函数名称存储为字符串,您也可以通过执行以下操作来最小化复杂性
(eval(settings.functionName))(t.parentNode.id);
这最大限度地减少了您必须构建和评估的 Javascript 数量。
处理程序字典
将您可能需要的所有操作函数放入一个对象中,并使用字符串以字典方式调用它们。
// global
itemActions = { click: clickedOnItem, rightClick: rightClickedOnItem /* etc */ };
// Later...
var actionName = "click"; // Or wherever you got the action name
var actionToDo = itemActions[actionName];
actionToDo(t.parentNode.id);
(小注:如果您在这里使用了语法,itemActions[actionName](t.parentNode.id);
则该函数将作为 的方法被调用itemActions
。)