Heim >Web-Frontend >js-Tutorial >So definieren Sie eine Klasse in JavaScript_Grundkenntnisse

So definieren Sie eine Klasse in JavaScript_Grundkenntnisse

WBOY
WBOYOriginal
2016-05-16 16:36:191131Durchsuche

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

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn