2009-05-12 17 views
2

ich viel gesehen habe ...Objektorientierte Programmierung mit Javascript - Konstrukteurs

function myObject(data) { 
     var myData = data; 
} 

myObject.prototype.doSomething = function() { 
     alert("I did something!"); 
} 

aber die Intellisense auf Visual Studio gibt mir eine .constructor für Funktionen, die mir dies zu glauben führen würde würde richtig sein ...

function myObject() { 
    var myData; 

    this.constructor = function(data) { 
     myData = data; 
    } 

    this.doSomething = function() { 
     alert("I did something!"); 
    } 
} 

Ich mag die Verkapselung des zweiten Verfahrens, aber fast jeder nutzt die „.prototype“. Gibt es einen Grund dafür, dies speziell zu tun, oder ist es in Ordnung, alle Klassenmethoden wie diese zu kapseln.

Antwort

3

dass nicht alles, was constructor tut. Es gibt einfach die Funktion zurück. In Ihrem Fall würde es myObject zurückgeben. Zum Beispiel:

function someObject() { 
    this.a = 5; 
} 
var obj = new someObject(); 
obj.constructor; // Would return someObject 

Siehe this für weitere Details über die constructor Eigenschaft.

Der Punkt prototype ist, dass Sie Konstrukteuren erweitern können, nachdem sie geschaffen habe. So könnten Sie beispielsweise eine Methode zu allen String-Objekten hinzufügen.

String.prototype.myFunc = function(){/*Some code*/}; 
Verwandte Themen