【发布时间】:2012-07-24 09:42:06
【问题描述】:
我想根据 HTML 元素列表中的 HTML 属性的值来实现,我可以根据该属性的字符串值调用不同的 javascript 函数。
基本上我想要的是 javascript / jQuery 中字符串 => 函数的映射。 (然后当然可以调用这个函数)。
这可能吗?
【问题讨论】:
标签: javascript jquery html map
我想根据 HTML 元素列表中的 HTML 属性的值来实现,我可以根据该属性的字符串值调用不同的 javascript 函数。
基本上我想要的是 javascript / jQuery 中字符串 => 函数的映射。 (然后当然可以调用这个函数)。
这可能吗?
【问题讨论】:
标签: javascript jquery html map
是的:
var fnMap = {
"foo": function() { ... },
"bar": function() { ... },
// ...
};
如果你的函数已经存在,你可以通过名字来引用它们:
var fnMap = {
"foo": someFunction,
"bar": otherFunction,
// ...
};
你可以混合使用这两种风格。
根据值调用其中一个函数:
fnMap[ value ]( param, param, ... );
【讨论】:
if (fnMap[value]) { fnMap[value](); } 中,这样就不会出现参考错误.也就是说,参考错误可能有助于正确的调试工具(只是不是在生产时)。
<select> 元素,那么可以安全地假设它没问题,但是这样的检查非常便宜,没有理由不这样做。
select 交易,而是因为字符串引用函数的模式非常容易(如果它们被封闭),因此相对安全,可以避免其他类似方法的陷阱(如eval),定期执行此操作,例如,歌曲项目列表,使用值中的函数播放歌曲 - 或在容器对象的值中,带有侦听器和名称目标项目中的歌曲本身(用作参数),没有理由不做这样的事情,它会让你的 HTML 闪闪发光
function foo(): string { return prompt("Input","foo"); } function bar(): string { return prompt("Input","bar"); } var params: { [index: string]: () => string; } = { "foo": foo(), "bar": bar() } 但没有爱,有什么想法吗? Woops 试图在打字稿中做到这一点......可能有点不同