我目前有这段代码,在页面加载时调用散列值中的函数:
$(function() {
var hash = window.location.hash.substring(1);
window[hash]();
});这很好用。
然而,我在命名空间中的Javascript是这样的:
var help = {
faq: function () {
//do stuff
},
newFeatures: function () {
//do stuff
}
}我上面列出的函数对命名空间的javascript不起作用。我曾尝试手动将名称空间添加到前端(所以是var hash = "help." + window.location.hash.substring(1);),但不起作用。
如何在不从命名空间中删除Javascript的情况下解决此问题?
发布于 2013-03-01 06:19:17
这应该是可行的:
$(function() {
var hash = window.location.hash.substring(1);
window.help[hash]();
});在JavaScript中,只要键是有效的JavaScript标识符,点符号和方括号就可以互换。(否则,您必须使用方括号。)
所以你也可以这样做(尽管点符号更具可读性):
$(function() {
var hash = window.location.hash.substring(1);
window["help"][hash]();
});发布于 2013-03-01 07:06:36
我正在使用一种类似的方法,将对象值存储在散列中。
我的技巧是:
现场演示:http://jsfiddle.net/Kn4w2/1/
代码示例:
var hashArray=hash.split("."),
myMethod=window;
for (var i=0;i<hashArray.length;i++){
myMethod=myMethod[hashArray[i]];
}唯一的限制当然是你的方法名不能包含点。
发布于 2013-03-01 06:25:31
我不是一个真正的粉丝,但'eval‘可能会起作用:
eval(hash + "()");示例:http://jsfiddle.net/pGktd/
https://stackoverflow.com/questions/15146765
复制相似问题