2011-03-29 46 views
0

我想要创建的函数的名称将来自我的一个变量的内容。基于变量动态生成函数名称

实施例:

var myFunctionName = "tryAgain";` 

      [tryAgain] 
       | 
       | 
       | 
function myFunctionName() { 
    alert('Try Again !'); 
}; 

回答

4

要在当前背景下

this[myFunctionName] = function() { 
    // statements 
} 
1
window[myFunctionName] = function() { 
    alert('Try Again !'); }; 

作品在全球范围内。

0
eval("function "+myFunctionName+"(){alert('Try Again !');}"); 

我不建议这样做创建一个新的功能;)不过是另一种方式,你可以做到这一点。

3

虽然您的问题已被正确回答,但我建议使用一个包含您的函数的对象,假设您生成多个对象。好处是,您可以遍历所有生成的函数,并将它们同时放入一个名称空间。

var funcs = {}; 
var name = 'test'; 

funcs[name] = function() 
{ 
    alert("Called a custom function"); 
}; 

funcs.test(); 
// Does the same funcs[name]();