2013-06-09 2 views
0

Я хочу создать имя моей функции javascript при загрузке в браузере и запустить его.

Я хочу, чтобы эквивалентность кода этого РНР:

<?php 

$name_function = 'toto'; 

function toto() { 
    echo 'toto'; 
} 


$name_function(); 

?> 

Мой Eval: зло :)

var chaine = 'TabToto'; 
var store = chaine.substr(3,chaine.length); 
eval ('store = this.get'+store+'Store()'); 

Хорошо, что я хочу:

var chaine = 'TabToto'; 
var store = 'get'+chaine.substr(3,chaine.length)+'Store'; 

store = this[store](); 

Мой контроллер создать функция, чтобы получить магазин, и я хочу его использовать ...

+4

Звуки, как будто вы делаете это неправильно ... – thejh

ответ

4
function toto() 
{ 
    alert('toto'); 
} 

var name_function = 'toto'; 
window[name_function](); 

(при условии, что это в глобальном масштабе)

+0

и если моя функция у меня (это .getTotoStore)? – VincentDA

+2

Просто избегайте eval, чтобы вы не попадали в проблемы XSS. В общем, просто используйте scope [myFunctionName]. –

+0

Thx это [my_function_name] в порядке! – VincentDA

3

Вместо того чтобы предоставить имя функции в виде строки, вы также можете присвоить ссылку на саму функцию переменной.

Это будет выглядеть следующим образом:

function toto() { 
    alert('toto'); 
} 
function toto2() { 
    alert('toto 2'); 
} 

var function_to_use = toto; // notice the lack of quotes 
function_to_use(); 

function_to_use = toto2; 
function_to_use(); 
+0

не совсем то, что я хочу – VincentDA

0

я сделал как этого

function a(){ 
alert(1); 

} 
var aa=a; 

aa(); 
Смежные вопросы