2009-07-08 8 views
0

ich eine Frage habe, wenn ein JavaScript-Objekt erstellen, , wenn eine Funktion eine andere Funktion innerhalb des Objekts aufgerufen wird, brauchen wir ‚dieses‘Javascript objektorientierte Funktion Frage aufrufen Anfänger

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

} 

Antwort

2

In dieser Situation zu verwenden, Ja. Dies liegt daran, dass Sie die anonyme Funktion einer Eigenschaft des neu erstellten Objekts zuweisen. Dies ist die einzige Möglichkeit, darauf zuzugreifen.

Es ist möglich, es zu machen, so dass this nicht in this.function_two erforderlich:

// 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; 

Das macht es so, dass function_one als Variable innerhalb des Verschlusses durch den Aufruf der Konstruktor erstellt zur Verfügung steht; Funktionen zur Verfügung zu stellen, um zwei verschiedene Wege (über freie Variable und Objekteigenschaft) aufzurufen, ist jedoch kein sehr gebräuchliches Idiom.

Ich schlage vor, Sie lesen this article by Crockford für ein besseres Verständnis der verschiedenen Möglichkeiten, wie Sie Methoden an Objekte anhängen können.

+0

wow..thanks für Sie schnelle Antwort geben muss, versuche ich Google-Suche zu tun, aber ich weiß, don 't, was Schlüsselwort soll ich suchen ... Danke vielmals. – jojo

0

Ja, im Gegensatz zu Java/C#/C++ Sie diesen