2013-01-07 6 views
-2

Quand j'écris book.main.method(); je suis arrivé erreur : Uncaught TypeError: Fonction Object() {Erreur: Uncaught TypeError: Fonction objet

window.book = window.book|| {}; 

    book.control = function() { 
     var check_is_ready = 'check_is_ready'; 
     if(check_is_ready == 'check_is_ready') { 
      this.startbook = function() { 
       var bookMain = new book.main(); 
        bookMain.method(); 
      return; 
      }; 
     }; 
    }; 

$(function() { 
    var control = new book.control(); 
    control.startbook(); 
}); 

(function() { 
    book.main = function() {  
    var index =0; 
     this.method = function() { 
      index++; 
      if (index <= 500){ 
       book.main.method();// <-- this wrong 
       // the error which I get :Uncaught TypeError: Object function() { 
       alert (index); 
       } 
     }; 
    }; 
})(); 

Que dois-je écrire à la place book.main.method(); de l'invoquer avec l'erreur sur?

merci beaucoup

+1

Je pense que cela peut être une amélioration sur votre code pour le moment, ne résout pas votre problème mais j'ai peur. http://pastebin.com/6pvmdBKp – Undefined

Répondre

0

Si je comprends bien le code principal problème est le suivant:Vous essayez d'appeler le method() récursivement. Une autre façon de faire l'appel récursif est de donner un nom à l'expression de la fonction (methodFn). Rappelez-vous simplement que ce nom n'est valide que dans le corps de cette fonction:

(function() { 
    book.main = function() {  
    var index =0; 
     this.method = function methodFn() { 
      index++; 
      if (index <= 500){ 
       methodFn(); 
       alert (index); 
      } 
     }; 
    }; 
})(); 
+0

vous êtes incroyable, – user1954217

0

Vous confondez le constructeur (book.main) et l'instance. Ajoute une fonction à l'instance que vous obtenez avec new book.main(), pas book.main.

Je ne suis pas sûr de votre objectif final exact, mais vous devez remplacer

book.main.method();// <-- this wrong 

avec

this.method();// <-- this works 

Notez également que si vous voulez voir les valeurs incrémentée de l'alerte que vous devez passer deux lignes:

(function() { 
    book.main = function() {  
    var index =0; 
    this.method = function() { 
     index++; 
     if (index <= 2){ 
      console.log(index); // less painful with console.log than with alert 
      this.method(); 
     } 
    }; 
    }; 
})(); 
+0

J'écris votre ligne avant et j'ai eu l'erreur 'Uncaught TypeError: Objet [la fenêtre d'objet] n'a aucune méthode 'méthode'' – user1954217

+0

Ça "fonctionne" pour moi. –

+0

Est-ce que je peux vous envoyer tout mon code? – user1954217

Questions connexes