Die Beziehung zwischen JS-Konstruktor und Instanziierung sowie Prototypeinführung

Die Beziehung zwischen JS-Konstruktor und Instanziierung sowie Prototypeinführung

1. Konstruktor und Instanziierung

Wenn unsere Programmierung objektorientiert ist, ist der erste Prozess die Abstraktion => dann die Instanziierung. Beispielsweise abstrahieren wir eine Person und ich kenne die grundlegenden Informationen über die Person. Name, Alter, Geschlecht usw.

Wir abstrahieren zuerst und instanziieren, nachdem die Abstraktion abgeschlossen ist.

2. Welche Beziehung besteht zwischen Konstruktor und Instanziierung?

//Dieser benutzerdefinierte Konstruktor befindet sich in der abstrakten Funktion Person(Name, Alter, Geschlecht){

    dies.name=Name;

    dies.Alter=Alter;

    dies.Geschlecht=Geschlecht;

    dies.sagen=funktion(){

        console.log("Mein Name ist",Name)

    }

}

// Dieser Prozess ist eine Instanziierung let per1=new Person('Person',300,'Person');

per1.say(); //Aufruf //let per1=new Person('Anonym',300,'Anonym');

Durch die obige Codezeile.

Wir können ein Fazit ziehen:

Die Beziehung zwischen dem Konstruktor und dem Instanzobjekt ist:

Instanzobjekte müssen über Konstruktoren erstellt werden.

Gleichzeitig können wir wissen, dass der Konstruktor des Instanzobjekts der Konstruktor ist

Lassen Sie uns beweisen, dass diese Aussage korrekt ist; der obige Code ändert sich nicht.

console.log( per1.constructor===Person ) //Gibt true zurück

Vollständige Erklärung: Die Aussage, dass der Konstruktor eines Instanzobjekts der Konstruktor ist, ist korrekt.

3. Ist per1.say gleich per2.say?

 Funktion Person(Name,Alter,Gefällt mir) {

    dies.name=Name;

    dies.Alter=Alter;

    dies.like=like;

    dies.sagen=funktion(){

        console.log('Ich kann Mahlzeiten auslassen');

    }

}

var per1=new Person("Person",300,'Person');

var per2=new Person('Person','10000','10000');

per1.sagen();

per2.sagen();

console.log( per1.say == per2.say ) //false

4. per1.say ist nicht gleich der Schlussfolgerung von per2.say

Weil console.log( per1.say == per2.say ) //false

Wir können ein Fazit ziehen.

Das heißt, per1.say() und per2.say() rufen nicht dieselbe Methode auf.

Sind ihre Inhalte gleich?

console.log( per1.say()==per2.say() ) //wahr

Der Beschreibungsinhalt ist gleich

5. Beispielcodeproblem

5.1 Probleme mit dem Code

Funktion Person(Name,Alter,Gefällt mir) {

    dies.name=Name;

    dies.Alter=Alter;

    dies.like=like;

    dies.sagen=funktion(){

        console.log('Ich kann Mahlzeiten auslassen');

    }

};

für (var index = 0; index < 100; index++) {

    var per=new Person("Person",300,'Person');

    pro.sagen();

}

Dieser Codeausschnitt: Er gibt 100 Plätze im Speicher frei. Jeder Bereich verfügt über eine „Say“-Methode. Aber jede Methode ist anders. Aber ihre Ausgabe ist die gleiche. Mit anderen Worten: Die Ausführungslogik ist dieselbe. Dies führt zu einer Platzverschwendung. Im Projekt führt dies zu einer Platzverschwendung.

Können wir es optimieren?

5.2 Code optimieren, um Platzverschwendung zu vermeiden

Funktion comSay(){

    //Führen Sie die gleiche Logik aus console.log('Ich kann Mahlzeiten auslassen')

};



Funktion Person(Name,Alter,Gefällt mir) {

    dies.name=Name;

    dies.Alter=Alter;

    dies.like=like;

    this.say=comSay; //Keine Klammern hinzufügen};

var per1=new Person("Person",300,'Person');

var per2=new Person('Person','10000','10000');

console.log( per1.say==per2.say ) //wahr

So sparen wir Platz. Bei jedem Aufruf handelt es sich um dieselbe Methode.

5.3 Mit dieser Methode können wir auch die Prototypmethode verwenden

Funktion Person(Name,Alter,Gefällt mir) {

    dies.name=Name;

    dies.Alter=Alter;

    dies.like=like;

};

Person.prototype.comSagen Sie=function(){

    console.log('Ich kann Mahlzeiten auslassen')

}

var per1=new Person("Person",300,'Person');

var per2=new Person('Person','10000','10000');

console.log( per1.comSay==per2.comSay ) //wahr

// Wir können Datenaustausch auch durch Prototypen lösen

Die Rolle des Prototyps: Daten teilen und Platz sparen.

Damit ist dieser Artikel über die Beziehung zwischen JS-Konstruktoren und Instanziierungen und die Einführung von Prototypen abgeschlossen. Weitere Informationen zur Beziehung zwischen JS-Konstruktoren und Instanziierungen und der Einführung von Prototypen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detaillierte Erklärung des JavaScript-Prototyps und Beispiele
  • Ein Artikel, der Ihnen hilft, die Vererbung und Prototypenkette von JS zu verstehen
  • Zusammenfassung und Praxis des Javascript-Prototyp-Kettendiagramms
  • Handschriftliche Implementierung von new in JS
  • Detaillierte Beschreibung der Funktion von new in JS
  • Wie gut kennen Sie sich mit dem Konstruktor, Prototyp, der Prototypenkette und Neuem von JavaScript aus?

<<:  Einführung in die Verwendung von this in HTML-Tags

>>:  Einführung in den visuellen Ausdruck des Kerninhalts von Webseiten (Bild und Text)

Artikel empfehlen

CentOS 7: Erläuterung zum Wechseln des Boot-Kernels und des Boot-Modus

Centos7-Switch-Boot-Kernel Hinweis: Bei Bedarf wi...

CSS zum Erstellen eines dynamischen sekundären Menüs

Dynamisches Implementieren eines einfachen sekund...

Auszeichnungssprache - CSS-Stile für Text festlegen

Klicken Sie hier, um zum Abschnitt „HTML-Tutorial“...

JavaScript-Timer zum nahtlosen Scrollen von Bildern

In diesem Artikel wird der spezifische JavaScript...

So überwachen und löschen Sie abgelaufene Sitzungen in Tomcat

Vorwort Ich habe zufällig entdeckt, dass die halb...

MySQL-Primärschlüssel-Benennungsstrategie im Zusammenhang

Als ich kürzlich die Details der Datenlebenszyklu...

So richten Sie Referer in Nginx ein, um Bilddiebstahl zu verhindern

Wenn die Bilder des Servers von anderen Websites ...

Schritte zum Einrichten des Windows Server 2016 AD-Servers (Bild und Text)

Einführung: AD ist die Abkürzung für Active Direc...

Detaillierte Erläuterung des Linux-CRM-Bereitstellungscodes

Linux-Grundkonfiguration Kompilieren und installi...

js realisiert 3D-Soundeffekte durch audioContext

In diesem Artikel wird der spezifische Code von j...

Vue Storage enthält eine Lösung für Boolesche Werte

Vue speichert Speicher mit Booleschen Werten Ich ...