Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erläuterung objektorientierter Methoden sowie Vor- und Nachteile der Objekterstellung in JavaScript

Ausführliche Erläuterung objektorientierter Methoden sowie Vor- und Nachteile der Objekterstellung in JavaScript

伊谢尔伦
伊谢尔伦Original
2017-07-26 10:48:111382Durchsuche

Wissenspunkte:
(1) JS-objektorientierte Grundlagen: ECMA-262 definiert ein Objekt als: „Eine Sammlung ungeordneter Attribute, deren Attribute Grundwerte, Objekte oder Funktionen enthalten können.“
(2) Methoden zum Erstellen von Objekten in JS:
(a) Factory-Muster: Verwenden Sie Funktionen, um die Details des Erstellens von Objekten mit einer bestimmten Schnittstelle zu kapseln.  

 function createPerson(name, age, job){ 
          var o = new Object(); 
          o.name = name; 
          o.age = age; 
          o.job = job; 
          o.sayName = function(){ 
          alert(this.name); 
          }; 
      return o; 
      } 
    var person1 = createPerson(“Nicholas”, 29, “Software Engineer”); 
    var person2 = createPerson(“Greg”, 27, “Doctor”);

Nachteile: Obwohl das Factory-Muster das Problem der Erstellung mehrerer bekannter Objekte löst, löst es nicht das Problem der Objekterkennung (d. h. wie man den Typ eines Objekts erkennt).
  (b) Konstruktormuster: Konstruktoren in ECMAScript können zum Erstellen von Objekten bestimmter Typen verwendet werden. Sie können benutzerdefinierte Konstruktoren erstellen, um Eigenschaften und Methoden benutzerdefinierter Objekttypen zu definieren.  

 function Person(name, age, job){ 
        this.name = name; 
        this.age = age; 
        this.job = job; 
        this.sayName = function(){ 
        alert(this.name); 
        }; 
      } 
      var person1 = new Person(“Nicholas”, 29, “Software Engineer”); 
      var person2 = new Person(“Greg”, 27, “Doctor”);

  Nachteile: Das Hauptproblem bei der Verwendung von Konstruktoren besteht darin, dass jede Methode auf jeder Instanz neu erstellt werden muss. Vergessen Sie nicht – Funktionen in ECMAScript sind Objekte. Jedes Mal, wenn Sie eine Funktion definieren,
 , instanziieren Sie ein Objekt.
 (c) Prototypmuster: Jede von uns erstellte Funktion verfügt über ein Prototypattribut, bei dem es sich um einen Zeiger handelt, der auf ein Objekt zeigt. Der Zweck dieses Objekts besteht darin, alle Objekte zu enthalten, die durch einen bestimmten Typ dargestellt werden können
Von Instanzen gemeinsam genutzte Eigenschaften und Methoden. Der Vorteil der Verwendung eines Prototypobjekts besteht darin, dass alle Objekte die darin enthaltenen Eigenschaften und Methoden gemeinsam nutzen können. Nachteile: Alle Eigenschaften im Prototyp werden von vielen Instanzen gemeinsam genutzt. Bei Eigenschaften mit Referenztypwerten ist das Problem jedoch schwerwiegender.

 (d) Kombinierte Verwendung von Konstruktormuster und Prototypmuster: Die gebräuchlichste Methode zum Erstellen eines benutzerdefinierten Typs ist die kombinierte Verwendung von Konstruktormuster und Prototypmuster. Das Konstruktormuster wird zum Definieren von Instanzeigenschaften verwendet, während das Prototypmuster zum Definieren von Methoden und gemeinsamen Eigenschaften verwendet wird. ​
  function Person(){ 
      } 
      Person.prototype.name = “Nicholas”; 
      Person.prototype.age = 29; 
      Person.prototype.job = “Software Engineer”; 
      Person.prototype.sayName = function(){ 
        alert(this.name); 
      }; 
      var person1 = new Person(); 
      person1.sayName(); //”Nicholas” 
      var person2 = new Person(); 
      person2.sayName(); //”Nicholas” 
      alert(person1.sayName == person2.sayName); //true

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung objektorientierter Methoden sowie Vor- und Nachteile der Objekterstellung in JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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