2010-08-13 16 views
0

Je travaille avec un programme Javascript assez complexe qui, à un point donné, renvoie des fonctions anonymes imbriquées.Javascript L'instance de la fonction est automatiquement convertie en objet et ne peut plus être appelée

Parfois, lorsque je tente de « appliquer » l'une de ces fonctions anonymes (« f » dans cet exemple) ...

f.apply (this.context, args) 

... Je reçois un « f.apply n'est pas une fonction " Erreur.

C'est bizarre, car alert (f) affiche le code source de la fonction mais typeof (f) renvoie "object" (pas "function").

alert (f) --> displays "function (input) { self.checkToken (input, regex, callback) }" 

De même, f.call et f.apply ne sont pas définis.

La vérification du typeof (f) à certaines étapes de l'exécution renvoie toujours "function". Je ne peux pas expliquer pourquoi, quand j'ai besoin d'appeler la fonction, elle jette un objet.

J'ai testé le code contre Firefox et le moteur Microsoft JScript, obtenant les mêmes résultats.

Peut-être que je manque un aspect de base des blocs anonymes Javascript? : - \

+1

Vous devriez publier une partie du code concerné. – Pointy

+0

Oui, je pensais qu'il serait préférable de poster du code, mais j'ai réalisé que peut-être lire 2.5k lignes de code est beaucoup plus que je peux vous demander :) Je vais essayer de reproduire l'erreur et coller un petit extrait. –

Répondre

0

Oh! Mea culpa ...

Je me suis rendu compte que je retournais la fonction dans un tableau de longueur 1, donc "alert()" a montré la représentation toString du premier objet.

Mystère résolue et honte publique sur moi :)