Heim > Web-Frontend > js-Tutorial > Hauptteil

Minimalistische Methode zur Vervollständigung der JavaScript-Kapselung und -Vererbung

小云云
Freigeben: 2017-11-30 09:25:36
Original
1442 Leute haben es durchsucht

In diesem Artikel werden wir über ein relativ neues Wissen für Anfänger sprechen: das Schreiben von JavaScript-Klassen mit der minimalistischen Methode. Der „minimalistische Ansatz“ ist das Werk des niederländischen Programmierers Gabor de Diese von Mooij vorgeschlagene Methode verwendet keinen Prototyp und ist sehr einfach bereitzustellen. Dies ist wahrscheinlich der Grund, warum sie als „minimalistische Methode“ bezeichnet wird. Im Folgenden wird die Verwendung der minimalistischen Methode zur Vervollständigung der JavaScript-Kapselung und -Vererbung vorgestellt. Ich hoffe, dass dies für alle hilfreich ist.

1. Kapselung

Erstens wird auch ein Objekt verwendet, um eine „Klasse“ zu simulieren. Definieren Sie in dieser Klasse einen Konstruktor createNew(), um Instanzen zu generieren.

var Cat = {
    createNew: function(){
      // some code here
    }
};
Nach dem Login kopieren


Definieren Sie dann in createNew() ein Instanzobjekt und verwenden Sie dieses Instanzobjekt als Rückgabewert.

var Cat = {
     createNew: function(){
       var cat = {};
       cat.name = "大毛";
       cat.makeSound = function(){ alert("喵喵喵"); };
       return cat;
     }
 };
Nach dem Login kopieren

Rufen Sie bei Verwendung von

die Methode createNew() auf, um das Instanzobjekt abzurufen.

var cat1 = Cat.createNew();
cat1.makeSound(); // 喵喵喵
Nach dem Login kopieren


Der Vorteil dieser Methode besteht darin, dass sie leicht verständlich ist, eine klare und elegante Struktur aufweist und dem traditionellen Konstrukt der „objektorientierten Programmierung“ entspricht Daher können die folgenden Merkmale problemlos bereitgestellt werden.

2. Vererbung

Lassen Sie eine Klasse eine andere Klasse erben, was sehr praktisch zu implementieren ist. Rufen Sie einfach die Methode createNew() des letzteren in der Methode createNew() des ersteren auf.
Definieren Sie zunächst eine Animal-Klasse:

var Animal = {
    createNew: function(){
      var animal = {};
      animal.sleep = function(){ alert("睡懒觉"); };
      return animal;
    }
};
Nach dem Login kopieren


Rufen Sie dann in der Methode createNew() von Cat die Methode createNew() von Animal auf

var Cat = {
     createNew: function(){
       var cat = Animal.createNew();
       cat.name = "大毛";
       cat.makeSound = function(){ alert("喵喵喵"); };
       return cat;
     }
 };
Nach dem Login kopieren


Die auf diese Weise erhaltene Cat-Instanz erbt die Animal-Klasse.

var cat1 = Cat.createNew();
cat1.sleep(); // 睡懒觉
Nach dem Login kopieren


3. Private Eigenschaften und private Methoden

In der Methode createNew(), sofern dies nicht der Fall ist Im Cat-Objekt definiert. Die Methoden und Eigenschaften sind alle privat.

var Cat = {
    createNew: function(){
      var cat = {};
      var sound = "喵喵喵";//私有属性
      cat.makeSound = function(){ 
     alert(sound); 
    };
      return cat;
    }
};
Nach dem Login kopieren


Die interne Variable sound im obigen Beispiel kann nicht extern gelesen werden und kann nur über die öffentliche Methode makeSound() von cat gelesen werden .

var cat1 = Cat.createNew();
alert(cat1.sound); // undefined
Nach dem Login kopieren


4. Datenfreigabe

Manchmal benötigen wir alle Instanzobjekte, um dasselbe lesen und schreiben zu können interne Daten. Kapseln Sie zu diesem Zeitpunkt einfach die internen Daten innerhalb des Klassenobjekts und außerhalb der Methode createNew().

var Cat = {
    sound : "喵喵喵",
    createNew: function(){
      var cat = {};
      cat.makeSound = function(){ alert(Cat.sound); };
      cat.changeSound = function(x){ Cat.sound = x; };
      return cat;
    }
};
Nach dem Login kopieren


Generieren Sie dann zwei Instanzobjekte:

var cat1 = Cat.createNew();
var cat2 = Cat.createNew();
cat1.makeSound(); // 喵喵喵
Nach dem Login kopieren


Wenn zu diesem Zeitpunkt ein Instanzobjekt die gemeinsam genutzten Daten ändert, ist auch das andere Instanzobjekt betroffen.

cat2.changeSound("啦啦啦");
cat1.makeSound(); // 啦啦啦
Nach dem Login kopieren

Minimalismus sieht zwar schön aus, hat aber auch Mängel. Erstens kann „instanceof“ nicht verwendet werden, um die Klasse zu bestimmen, zu der ein Objekt gehört, „cat1-Instanz“. „Cat“ kann nicht passieren. Obwohl der Minimalismus die Nachteile der Verwendung der Prototypenkette beseitigt (Eigenschaften können nicht privat sein, das Erstellen und Erben von Objekten ist nicht intuitiv), werden auch die Nachteile der Nichtverwendung der Prototypenkette aufgedeckt: Jedes Mal, wenn ein Wenn eine Instanz generiert wird, muss sie mehr Speicher beanspruchen.

Der obige Inhalt handelt von der minimalistischen Methode zum Schreiben von JavaScript.

Verwandte Empfehlungen:

JavaScript objektorientiert (minimalistischer Ansatz)_js objektorientiert

Methoden zur Behandlung von JavaScript-Ausnahmen

JavaScript-Simulation Drei Möglichkeiten zur Implementierung der Kapselung und ihre Unterschiede

Das obige ist der detaillierte Inhalt vonMinimalistische Methode zur Vervollständigung der JavaScript-Kapselung und -Vererbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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