Javascript 有没有一种在js中动态调用方法的好方法?
我有两个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
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个与你的答案完全相同。当我回答问题时,他们没有答案