2010-11-10 1 views
1

Juste pour essayer de comprendre Javascript, une chose très étrange est arrivée. La méthode getChapters() tire même si je ne l'ai pas explicitement appelé ... Des idées? (Je reçois la boîte d'alerte pour obtenir des chapitres).Pourquoi cette méthode javascript se déclenche-t-elle même si je ne l'appelle pas?

videoChapters = function() { 
}; 

videoChapters.prototype.config = { 
    jsonProvider : '_Chapters.aspx' 
}; 

videoChapters.prototype.init = function() { 
    //get chapters 
}; 

videoChapters.prototype.getChapters = new function() { 
    alert('getting chapters'); 
} 

jQuery(document).ready(function() { 
    videoChapters = new videoChapters(); 
    videoChapters.init(); 
}); 

Répondre

3

Cette ligne:

videoChapters.prototype.getChapters = new function() { 

... ne devrait probablement pas contenir le mot 'nouveau'. Lorsque Javascript tente d'évaluer l'expression, il transmet le résultat de votre fonction à l'opérateur 'new'.

2

Supprimer le mot-clé new:

videoChapters.prototype.getChapters = function() { 
    alert('getting chapters'); 
} 
1
....prototype.getChapters = new function() { 
          ^-------- See the new keyword here? 

Supprimez le mot clé new et tout fonctionne comme prévu, en utilisant new invoquera la fonction en tant que constructeur et retourner une nouvelle instance de celui-ci, dans ce cas, une nouvelle instance d'une fonction anonyme.

Questions connexes