Heim > Web-Frontend > js-Tutorial > Prototyp vs. Abschluss: Welche JavaScript-Objekterstellungsmethode ist die richtige für Sie?

Prototyp vs. Abschluss: Welche JavaScript-Objekterstellungsmethode ist die richtige für Sie?

DDD
Freigeben: 2024-12-11 04:37:09
Original
693 Leute haben es durchsucht

Prototype vs. Closure: Which JavaScript Object Creation Method is Right for You?

Richtige Implementierung benutzerdefinierter JavaScript-Objekte

JavaScript bietet zwei unterschiedliche Ansätze zum Erstellen benutzerdefinierter Objekte mit Eigenschaften und Methoden: die Prototyp-Methode und die Abschlussmethode.

Prototype Way

Diese Methode ist nativer für JavaScript und nutzt die Prototyp-Lookup-Eigenschaft des Konstruktors Funktionen.

function Shape(x, y) {
  this.x = x;
  this.y = y;
}

Shape.prototype.toString = function() {
  return 'Shape at ' + this.x + ', ' + this.y;
};

function Circle(x, y, r) {
  Shape.call(this, x, y); // Invoke base constructor
  this.r = r;
}
Circle.prototype = new Shape(); // Set subclass prototype

Circle.prototype.toString = function() {
  return 'Circular ' + Shape.prototype.toString.call(this) + ' with radius ' + this.r;
};
Nach dem Login kopieren

Abschlussmethode

Diese Methode vermeidet die prototypische Vererbung insgesamt und erstellt für jede Instanz einen neuen Abschluss.

function Shape(x, y) {
  var that = this;
  this.x = x;
  this.y = y;
  this.toString = function() {
    return 'Shape at ' + that.x + ', ' + that.y;
  };
}

function Circle(x, y, r) {
  var that = this;
  Shape.call(this, x, y); // Invoke base constructor
  this.r = r;
  var _baseToString = this.toString;
  this.toString = function() {
    return 'Circular ' + _baseToString.call(that) + ' with radius ' + this.r;
  };
}

var myCircle = Circle(); // Using `new` is optional here
Nach dem Login kopieren

Auswahl und Überlegungen

Beide Methoden haben Vor- und Nachteile.

Prototyp Weg

  • Effizienter bei der Vererbung schwerer Objekte
  • Nativ in JavaScript, erleichtert die Verwendung von „instanceof“
  • Erfordert ordnungsgemäßen Konstruktoraufruf in Unterklassen

Schließung Weg

  • Jede Instanz hat ihre eigene Kopie von Methoden (weniger effizient)
  • Vereinfacht die Bindung von Methoden an Instanzen
  • Keine Instanzunterstützung, erfordert benutzerdefinierte Prüfungen

Letztendlich hängt die beste Wahl von den spezifischen Projektanforderungen und -präferenzen ab.

Das obige ist der detaillierte Inhalt vonPrototyp vs. Abschluss: Welche JavaScript-Objekterstellungsmethode ist die richtige für Sie?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage