2012-04-13 3 views
0

Я просто хотел спросить, можно ли взять строку, которая всегда будет постоянной и добавить к ней имя функции. пример:В javascript можно добавить строку к имени функции?

function modifyFunctionName(theFunc) 
{ 
    var newFunc = "link" +theFunc; 
    return newFunc; 
} 
//Somewhere in the HTML: 
<input type='submit' value='button' onclick='modifyFunctionName(CheckLogin())'/> 

Так modifyFunctionName вернется linkCheckLogin().

EDIT: К сожалению, ребята, на самом деле то, что я точно пытается сделать, это: https://gist.github.com/2371187

+3

Что вы пытаетесь сделать? –

+2

Выглядит как хороший кандидат на проблему XY (http://mywiki.wooledge.org/XyProblem). Что вы на самом деле пытаетесь сделать? –

+0

Кажется, что OP хочет присвоить функцию '' 'другой функции обработчика событий '', в зависимости от возвращаемого значения CheckLogin(). – Teemu

ответ

1

Это технически возможно, но вам нужно будет использовать eval, и это не очень хорошая идея. То, что вы можете сделать, это создать объект и просто сохранить ссылки на функции, и он будет работать одинаково.

var obj={}; 

function addFunction(name,func){ 
    obj[name]=func; 
} 

function changeName(oName,nName){ 
    obj[nName]=obj[oName]; 
    delete obj[oName]; 
} 

addFunction('test',function(){return 'hi'}); 
obj.test();//returns 'hi' 
changeName('test','greet'); 
obj.greet();//returns 'hi' 
0
<script> 

    function one() { 
     alert("one"); 
    } 

    eval("function two() { one();}"); 
    two(); 

</script> 
0

на основе вопроса: это не очень понятно, что вы собираетесь делать, в любом случае, вы можете Eval ничего который прилагается к области:

myFunction(aString){ 
// window is the scope , the context. 
window[aString] = myFunction ; 
} 

Вопрос в том, почему вы хотите это сделать?