我正在调用这样的 JavaScript 函数:
window[className + 'Click']();
className var 包含一些其他字符串,最后,它调用 myClick() 或 whatEverClick() 之类的函数。没关系,但是有没有办法让第一部分不区分大小写?
示例:
classname = 不管 --> 调用 whatEverClick()
classname = whatEver --> 调用 whatEverClick()
那可能吗?谢谢!
我正在调用这样的 JavaScript 函数:
window[className + 'Click']();
className var 包含一些其他字符串,最后,它调用 myClick() 或 whatEverClick() 之类的函数。没关系,但是有没有办法让第一部分不区分大小写?
示例:
classname = 不管 --> 调用 whatEverClick()
classname = whatEver --> 调用 whatEverClick()
那可能吗?谢谢!
你可能不应该,但你可以(不包括某些语言的特殊性):
第 1 步:构建所有窗口属性的小写映射:
var map = {};
for (var key in window) map[key.toLowerCase()] = window[key];
第 2 步:调用您的函数:
map[className.toLowerCase()+'click']();
如果您想以 window 作为上下文 ( this
) 调用它,请使用
map[className.toLowerCase()+'click'].call(window);
如果您绝对有必要在全局对象的上下文中执行,请使用此解决方案,否则我更喜欢解决方案 2(受dystroy 的回答启发)
解决方案 1
if(window[className+"Click"]){
window[className+'Click']();
}else{
for(var f in window){
if(window.hasOwnProperty(f) && typeof window[f]=='function'){
if(f.toLowerCase() === className.toLowerCase()+'click'){
window[f]();
}
}
}
}
解决方案 2
//Create an Object and store all the references
var functions_hash = {}
for(var f in window){
if(window.hasOwnProperty(f) && typeof window[f]=='function'){
functions_hash[f.toLowerCase] = window[f]
}
}
//execute using the hash later on
functions_hash[className.toLowerCase()+'click']