2011-08-11 3 views

Répondre

-2

Le cas ne correspond pas. Javascript est sensible à la casse.

+2

Voulez-vous dire myFunc, je souhaite appeler la fonction via la variable myFunc, sans appeler MyFunc directement. – Thomson

1

En javascript, une fonction est juste une autre variable.

function MyFunc(){} 

est le même que

var MyFunc = function(){}; 

Ainsi ceci est également valable

function MyFunc(){} 
var myfunc = MyFunc; 
myfunc(); 
+1

* "... est la même chose que ..." * Non, ce n'est pas le cas. Il existe des différences substantielles entre la première, qui est une déclaration de fonction, et la seconde, qui est une expression de fonction. Ils sont valables syntaxiquement à différents endroits, ils sont traités à des moments différents, et ils ont des effets différents sur la portée dans laquelle ils se trouvent. –

6

En faisant new MyFunc(), vous traitez MyFunc comme constructeur et créez un objet avec elle. Ceci traite MyFunc comme une classe dont vous voulez une instance. Vous voulez juste assigner une autre variable pour pointer vers la fonction, ainsi vous ne voulez pas le new ou le ().

Vous souhaitez simplement définir var myFunc = MyFunc, puis en appelant myFunc() fonctionnera.

1

vous créez l'objet de la fonction du nouveau mot-clé a été utilisé pour créer l'objet

var myfun_var = function MyFunc(){ 
     alert("hello"); 
} 

and call myfun_var(); 
1

appeler Alors new MyFunc() sera excute quel que soit le code que vous mettez là-dedans - il agit un peu comme un constructeur dans d'autres langues - bien pas exactement.

Si ce n'était pas une faute de frappe et que vous vouliez définir une fonction de votre classe appelée myFunc si vous voulez en faire quelque chose comme

MyFunc.prototype.myFunc = function() { 
} 
1

Je pense que ce que vous vouliez est le suivant:

var myFunc = function(){ 
    .... 
}; 

myFunc(); 

Ceci crée une variable nommée myFunc qui est une référence à la fonction anonyme.

2

En JavaScript, les fonctions sont des objets de première classe. Pour faire référence à l'objet, utilisez simplement le nom de la fonction. Donc, si vous voulez juste appeler MyFunc par la variable myFunc, juste assigner MyFunc-myFunc:

function MyFunc(){} 
var myFunc = MyFunc; // <=== Change on this line 
myFunc(); 

Votre ligne d'origine:

var myFunc = new MyFunc(); 

... appelle MyFunc en fonction du constructeur, et myFunc (la variable) recevra une référence à tout objet créé en conséquence. (Tout comme, disons, var now = new Date(); crée un objet Date et l'affecte à now.

+0

Alors pouvez-vous nous en dire un peu plus sur 'var myFunc = MyFunc()', quel objet cette ligne crée-t-elle? – Thomson

+2

Ceci exécute la fonction 'MyFunc()' et affecte le résultat de retour de la fonction à la variable 'myFunc' tout comme' var el = document.getElementById ("header"); 'would. – jfriend00

+0

@ jfriend00, mais il n'y a pas d'instruction return dans la fonction de MyFunc(), cela signifie-t-il que myFunc recevra un pointeur nul? – Thomson

Questions connexes