2009-07-08 7 views
0

j'ai une question lors de la création d'un objet javascript, quand une fonction invoquant une autre fonction au sein de l'objet, avons-nous besoin d'utiliser « cette »objet fonction javascript orienté appeler question débutant

MyObject = function() { 

    this.function_one = function(param) { 
     return param + param; 
    }; 

    this.function_two = function(param) { 
     return this.function_one(param) * this.function_one(param); 
     // when invoking function_one, do i need to use 'this' ???? 
    }; 

} 

Répondre

2

Dans cette situation, Oui. C'est parce que vous affectez la fonction anonyme à une propriété de l'objet nouvellement construit, qui est le seul moyen d'y accéder.

Il est possible de faire en sorte que this n'est pas nécessaire dans this.function_two:

// Inside the MyObject constructor: 
    function function_one(param) { 
     return param + param; 
    } 
    // Optional, if you don't care about being able to call 
    // function_one from outside the closure 
    this.function_one = function_one; 

Ce qu'il fait en sorte que function_one est disponible en tant que variable à l'intérieur de la fermeture créée en appelant le constructeur; rendre les fonctions disponibles pour appeler deux manières différentes (via la variable libre et la propriété d'objet) n'est pas un idiome très commun, cependant.

Je vous suggère de lire this article by Crockford pour une meilleure compréhension des différentes façons d'attacher des méthodes à des objets.

+0

wow..thanks pour vous réponse rapide, je tente de faire la recherche google, mais je sais ce mot don 't clés dois-je rechercher ... Merci beaucoup. – jojo

0

Oui, contrairement à Java/C#/C++ vous devez spécifier ce