Javascript 有没有一种在js中动态调用方法的好方法?

Javascript 有没有一种在js中动态调用方法的好方法?,javascript,Javascript,我有两个js函数: function onRegionMouseOver() { } function onRegionMouseOut() { } 可以这样动态调用这些js函数吗 var type = 'Out' //the following line would exec onRegionMouseOut() above: call(onRegionMouse[type]()) 可以将函数定义为对象的属性,使用括号表示法调用函数 const方法={ onRegionMouseOve

我有两个js函数:

function onRegionMouseOver()
{
}

function onRegionMouseOut()
{
}
可以这样动态调用这些js函数吗

var type = 'Out'
//the following line would exec onRegionMouseOut() above:
call(onRegionMouse[type]())

可以将函数定义为对象的属性,使用括号表示法调用函数

const方法={
onRegionMouseOver(){console.log(“Over”)},
onRegionMouseOut(){console.log(“Out”)}
}
让fn=“onRegionMouse”;
释放type=“Out”;
方法[`${fn}${type}`]();
type=“结束”;

方法[`${fn}${type}`]()您可以将函数定义为对象的属性,使用括号表示法调用函数

const方法={
onRegionMouseOver(){console.log(“Over”)},
onRegionMouseOut(){console.log(“Out”)}
}
让fn=“onRegionMouse”;
释放type=“Out”;
方法[`${fn}${type}`]();
type=“结束”;
方法[`${fn}${type}`]()您可以使用:

var onRegionMouseHandlers = {
  out: function () {},
  in: function () {}
}

// and using like this
var whatToUse = 'in';
// use
onRegionMouseHandlers[whatToUse]()
此外,您还可以删除选择必须调用的函数。您可以向两个不同的事件添加两个处理程序。

您可以使用以下方法:

var onRegionMouseHandlers = {
  out: function () {},
  in: function () {}
}

// and using like this
var whatToUse = 'in';
// use
onRegionMouseHandlers[whatToUse]()

此外,您还可以删除选择必须调用的函数。您可以向两个不同的事件添加两个处理程序。

您可以执行类似的操作,前提是您声明了一个包含函数的对象

var onRegionMouse = {
   Out: onRegionMouseOut,
   Over: onRegionMouseOver
};
现在你可以做了

var type = 'Out';
onRegionMouse[type]();

如果声明一个包含函数的对象,则可以执行类似的操作

var onRegionMouse = {
   Out: onRegionMouseOut,
   Over: onRegionMouseOver
};
现在你可以做了

var type = 'Out';
onRegionMouse[type]();
那么:

var myFunctions = {
   out: function onMouseOut()...,
   enter: function onMouseEnter()...
}
您现在可以使用myFunctions[“out”]()调用它。

关于:

var myFunctions = {
   out: function onMouseOut()...,
   enter: function onMouseEnter()...
}

您现在可以使用myFunctions[“out”]()调用它。

注意,这种字符串定义符号(模板文字?不知道如何正确命名)只能在少数现代浏览器上使用。或者您需要传输此代码。同样的
关键字我想如果你能提到为什么要给出两个变体:现代和非现代,那就太好了。@SharikovVladislav不确定“现代”是否是答案中可能变体的适当描述,或者为什么在答案中提供两个变体。相反,1)访问自由和开放源码软件浏览器;2) 持续更新至FOSS浏览器的最新版本。在1)的情况下可能无法实现上述要求;或者用户只是没有在2处执行一致的更新)。您真的应该使用
fn+type
而不是字符串插值或
concat
@guest271314不知道。我会检查caniuse和kangax的compat表。请注意,这种字符串定义表示法(模板文字?不知道如何正确命名)只能在少数现代浏览器上使用。或者您需要传输此代码。同样的
关键字我想如果你能提到为什么要给出两个变体:现代和非现代,那就太好了。@SharikovVladislav不确定“现代”是否是答案中可能变体的适当描述,或者为什么在答案中提供两个变体。相反,1)访问自由和开放源码软件浏览器;2) 持续更新至FOSS浏览器的最新版本。在1)的情况下可能无法实现上述要求;或者用户只是没有在2处执行一致的更新)。您真的应该使用
fn+type
而不是字符串插值或
concat
@guest271314不知道。我会查看caniuse和kangax的compat表。已经有3个类似的答案,其中2个与你的答案完全相同。当我回答问题时,他们已经有3个类似的答案,其中2个与你的答案完全相同。当我回答问题时,他们没有答案