在JS变量中调用值作为JS函数名

时间:2012-09-01 15:18:22

标签: javascript

您好我有一个执行操作的函数,但该函数的名称在变量...

下面的代码将获取URL的散列部分示例:#JHON并删除#并将其存储在URLHASH变量中。例如:JHON

  var urlhash = document.location.hash;
  urlhash = urlhash.replace(/^.*#/, '');

总是在变量内部有一个函数名称,我希望将该变量中的值作为函数名调用

  window.onload=function() {
    Value inside URLHASH variable should run as a name of a variable. example: jhon();
  };

有可能吗?我尝试了一些代码,但它将变量名称作为函数而不是变量中的值。帮助我..

2 个答案:

答案 0 :(得分:4)

您可以使用以下内容:

window[urlhash]();

这将调用一个函数,其名称是urlhash变量的,在window的上下文中定义。这是一个 DEMO

答案 1 :(得分:0)

您可以像访问数组索引一样访问对象的属性,例如,您可以这样运行getElementById

document["getElementById"]("#myid");

因此&安培;如果您事先知道该函数将成为哪个对象,则可以通过这种方式访问​​它。全局范围内的函数是window对象的方法。但是,如果哈希可能包含#document.write()之类的表达式,则必须进行一些解析。它可以像这样工作

window.onload=function() {
    var urlhash = document.location.hash, current_element = window;
    urlhash = urlhash.replace(/^.*#/, '');
    elements = urlhash.split(".");
    for(var i=0; i<elements.length; i++){
        current_element = current_element[elements[i]];
    }
    //execute the actual function
    current_element();
};