我有2个js函数:
function onRegionMouseOver()
{
}
function onRegionMouseOut()
{
}
是否可以动态调用这些js函数做这样的事情?:
var type = 'Out'
//the following line would exec onRegionMouseOut() above:
call(onRegionMouse[type]())
答案 0 :(得分:4)
您可以使用:
var onRegionMouseHandlers = {
out: function () {},
in: function () {}
}
// and using like this
var whatToUse = 'in';
// use
onRegionMouseHandlers[whatToUse]()
此外,您可以删除哪个选择要调用的函数。您可以在两个不同的事件中添加两个处理程序。
答案 1 :(得分:2)
您可以将函数定义为对象的属性,使用括号表示法来调用函数。
const methods = {
onRegionMouseOver() {console.log("Over")},
onRegionMouseOut() {console.log("Out")}
}
let fn = "onRegionMouse";
let type = "Out";
methods[`${fn}${type}`]();
type = "Over";
methods[`${fn}${type}`]();
没有模板文字或let
var methods = {
onRegionMouseOver: function onRegionMouseOver() {console.log("Over")},
onRegionMouseOut: function onRegionMouseOu() {console.log("Out")}
}
var fn = "onRegionMouse";
var type = "Out";
methods[fn + type]();
type = "Over";
methods[fn + type]();
答案 2 :(得分:0)
如果你声明一个包含这些函数的对象,你可以这样做。
var onRegionMouse = {
Out: onRegionMouseOut,
Over: onRegionMouseOver
};
现在你可以做到
var type = 'Out';
onRegionMouse[type]();
答案 3 :(得分:0)
怎么样:
var myFunctions = {
out: function onMouseOut()...,
enter: function onMouseEnter()...
}
您现在可以使用myFunctions [" out" ]()