Prototyp in Javascript | Komentor

Standardmäßig hat jede Funktion einen Eigenschaftsnamen als Prototyp, der lautet LEER (standardmäßig).
Wir können ihm Eigenschaften und Methoden hinzufügen.

Hinweis: Jede Funktion ist eine Konstruktorfunktion in JS.

Nehmen wir an, wir haben eine Funktion x und ein Objekt erstellen x von x wie x1 erbt den Prototyp von x.

var x = function(j) {
  this.i = 0;
  this.j = j;
  
  this.GetJ =  function() {
  	return this.j;
  }
}

var x1 = new x(2);

console.log(x1); 
  
 
console.log(x1.GetJ());
  

Hinweis: Wenn es um Konstruktorfunktionen geht this bezieht sich nicht auf die Funktion, die es enthält, sondern auf die Objekte, die von den Konstruktorfunktionen erstellt werden.

Jetzt kann ich mein gewünschtes Objekt erstellen und jedes aus x erstellte Objekt wird ein haben GetJ() Methode angebracht, die Art auf ist Schlecht.
Die Lösung dafür ist Prototyp.

Also nehmen wir die GetJ() Methode und es zum Prototyp von x.

var x = function(j) {
  this.i = 0;
  this.j = j;
}

x.prototype.GetJ =  function() {
  	return this.j;
 }

var x1 = new x(2);

console.log(x1); 
  
 
console.log(x1.GetJ());
  

Aber wir bekommen immer noch die richtige Ausgabe, da sie sich genauso verhält wie vorher, der einzige Unterschied ist das x1 hat kein eigenes GetJ() Methode. Also sucht es in der Prototyp-Kette (in ihrem Elternteil) und findet die Methode GetJ().

Notiz: Prototyp-Kette: So wird jede Funktion in Javascript aus einem Master-Objekt erstellt.

Hier x -> Function -> Object
Wenn wir also eine Methode von aufrufen xWenn diese spezielle Funktion nicht aktiviert ist x es wird nach oben und oben suchen, bis es es in findet
Kette des Prototyps oder wenn die Funktion nicht in der Kette vorhanden ist, wird sie angezeigt undefined.

Für zB

var x = function() {
}

console.dir(x);

Screenshot 2018-05-22 um 6 13 34 Uhr

So können wir die gesamte Prototypkette.
Hier, wenn ich anrufe

console.log(x.toString());



Hier x hat nicht toString() Methode, aber es geht nach oben und findet es in der Prototypkette.

Prototypen im Detail

Wie wir wissen, hat Javascipt keine Klassendefinition als Java.
Hier zeige ich Ihnen, wie Sie eine Unterklasse aus einer Basisklasse erstellen.


var Bookshop = function() {
  this.cost = 100;
}

Bookshop.prototype.bill = function() {
  console.log('Your Bill is: $'+ this.cost);
}

Hier Bookshop ist unsere Basisklasse mit einer Methode bill() in seinem Prototyp.


 var BuyBook = function(title,cost) {
  Bookshop.call(this); 
  
  this.title = title;
  if(cost) 
    this.cost = cost ;
 }

BuyBook.prototype = Object.create(Bookshop.prototype); 
BuyBook.prototype.constructor = BuyBook; 

Jetzt habe ich eine Unterklasse BuyBook der Basisklasse von Bookshop.

Erläuterung

  • Aussage 1 : Bookshop.call(this);.
    Diese Zeile ruft den Konstruktor auf und setzt die this Wert. Also rein BuyBook : this = { this.cost = 100; }.

  • Aussage 2 : BuyBook.prototype = Object.create(Bookshop.prototype);.
    Diese Zeile hilft beim Erben von Bookshop.prototype.

  • Erklärung 3 : BuyBook.prototype.constructor = BuyBook;.
    Diese Zeile setzt den Konstruktor für BuyBook, dh die BuyBook-Methode.

 var person_1 = new BuyBook('GOT', 200);
 var person_2 = new BuyBook('Harry Potter');

 person_1.bill();
 
 person_2.bill();
 

So können wir perform Vererbung nennen. Sie können die auch überschreiben bill() method by definiert eine neue Methode in BuyBook.prototype.bill = function() { }.

😄

Similar Posts

Leave a Reply

Your email address will not be published.