Heim >Web-Frontend >js-Tutorial >So definieren Sie eine Klasse in JavaScript_Grundkenntnisse
So habe ich es ursprünglich geschrieben:
function Dog(){ this.name = 'hachi'; } Dog.prototype = { makeNoise:function(){ alert('wangwangwang'); } };
Später sah ich eine andere Schreibweise, die etwas komplizierter war und unnötig erschien:
function Dog(){ var privateVariable = 'secret'; var fn = function(){ //... } fn.prototype = { makeNoise:function(){ alert('wangwangwang'); } } return fn; }
Die Dog-Funktion hier ist eigentlich eine Klassenerstellungsfunktion, die die echte Dog-Klasse zurückgibt.
Ich glaube, dass der Vorteil dabei in einer besseren Kapselung liegt.
PrivateVariable ist hier beispielsweise eine private Variable:
var d = new Dog; d.privateVariable //undefined
Außerdem, wenn Sie am Ende des ersten Beispiels einen Satz hinzufügen:
Dog.prototype = { //e...WTF?? }
Auf diese Weise ist Hund nicht länger Hund~
Späteres Verständnis:
Die obige Methode zum Erstellen einer neuen Klasse überschreibt direkt das Prototypobjekt. Auf diese Weise gehen die ursprünglich eingebauten Eigenschaften des Prototyps verloren (Argumente, Aufruf, Anwenden usw.).
Die folgende Methode zum Erstellen einer neuen Klasse scheint besser zu sein:
var Dog = function(name){ this.name = name; var privateVariable = 'you cannot see me.'; this.getPrivate = function(){return privateVariable;}; }