Question

Je suis une question quand créer un objet javascript, quand une fonction invoquant une autre fonction au sein de l'objet, ne nous devons utiliser « ceci »

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' ????
    };

}
Était-ce utile?

La solution

Dans ce cas, oui. En effet, vous attribuez la fonction anonyme être une propriété de l'objet nouvellement construit, qui est la seule façon d'y accéder.

Il est possible de faire en sorte que this ne soit pas nécessaire 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;

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

Je vous suggère de lire cet article par Crockford pour une meilleure compréhension des différents façons dont vous pouvez attacher des méthodes à des objets.

Autres conseils

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top