Javascript 调用名称与Regex匹配的多个函数

Javascript 调用名称与Regex匹配的多个函数,javascript,Javascript,我有一些类似的功能: 函数名_a(){} 函数名_b(){} 函数名_x(){} 函数名\u n(){} 我想用javascript中的正则表达式调用所有以name\ucode>开头的函数 我该怎么做呢?就为了好玩,这里有些东西你可以用。ES5,因此IE>9是必需的(不过,可以针对较旧的浏览器支持进行调整) 用法() 全局功能(窗口目标对象): 输出: a1-> stuff 1 3 4 b1-> stuff stuff 1 3 4 person.aa called with s

我有一些类似的功能:

  • 函数名_a(){}
  • 函数名_b(){}
  • 函数名_x(){}
  • 函数名\u n(){}
我想用javascript中的正则表达式调用所有以
name\ucode>开头的函数


我该怎么做呢?

就为了好玩,这里有些东西你可以用。ES5,因此IE>9是必需的(不过,可以针对较旧的浏览器支持进行调整)

用法(全局功能(
窗口
目标对象):

输出:

a1-> stuff 1 3 4
b1-> stuff
stuff 1 3 4
person.aa called with some argument
valuesReturned were ["this is the return value of person.aa"]

对象功能(任何对象作为目标):

输出:

a1-> stuff 1 3 4
b1-> stuff
stuff 1 3 4
person.aa called with some argument
valuesReturned were ["this is the return value of person.aa"]

问题中的示例

function name_a(){ console.log('name_a called'); }
function name_b(){ console.log('name_b called'); }
function name_x(){ console.log('name_x called'); }
function name_n(){ console.log('name_n called'); }

callFunctionsMatching(window, /^name_/, 'args');
输出:

a1-> stuff 1 3 4
b1-> stuff
stuff 1 3 4
person.aa called with some argument
valuesReturned were ["this is the return value of person.aa"]
函数名\u调用
调用函数名
调用的函数名
调用的函数名_b

这不处理DOM对象,但是如果您有一个普通对象,并且只想在一个级别上搜索与某个正则表达式匹配的所有函数,您可以(可选地,按顺序显示每个函数的执行情况):


好奇。它们都是全局的吗?对于全局范围
Object.keys(window.filter)(key=>typeof window[key]=='function'&&&/^name.*/.test(key)).forEach(funcName=>window[funcName]())
,但我很确定这种解决原始问题的方法是错误的。为什么不直接创建一个函数数组呢?然后你可以调用
name[i]()
。为什么?你想解决什么问题?这似乎是一个复杂的,脆弱的方式来做大多数事情。