Heim > Web-Frontend > js-Tutorial > Hauptteil

Eigenschaftenvererbung in der objektorientierten Programmierung in Javascript

巴扎黑
Freigeben: 2016-11-25 11:00:20
Original
1091 Leute haben es durchsucht

In JavaScript gibt es kein Vererbungsschlüsselwort: „extends“. Welche Methoden werden also verwendet, um Attribute des Objekts basierend auf einem anderen Konstruktor zu generieren (zu erben/kopieren), wenn ein Konstruktor zum Generieren eines Objekts verwendet wird? Das heißt: Wenn Sie das Schlüsselwort new für eine Funktion verwenden, um ein Objekt zu generieren, können die Eigenschaften des Objekts von anderen Funktionen stammen.

Dieser Artikel bietet zwei Schreibweisen:

Die erste (informelle):
Aber Sie müssen diese Verwendung verstehen.

Javascript-Code

Funktion Tier (Name, Alter){

this.name = name;

this.age = Alter; (Name, Alter);

}

d = neuer Hund('hello',20); >console .log(d);

/*

Hund {Name: „Hallo“, Alter: 20}

Alter: 20

i: Funktion Tier(Name, Alter)

Name: „Hallo“

__proto__:

Konstruktor: functionDog(name , Alter)

*/

Die obige Schreibweise besteht darin, die äußere Funktion Tier als eine ihrer eigenen inneren zu bezeichnen Mitgliedsfunktionen.

Dies ist eine Möglichkeit, eine anonyme Funktion zu schreiben.

entspricht:

Javascript-Code

Funktion Hund (Name, Alter){

this.i = Funktion Tier (Name, Alter){

this.name = Name;

this.age = Alter


}

this.i(name, age
}

entspricht:

Javascript-Code

Funktion Hund (Name, Alter){

/*

Wenn Sie eine Funktion aufrufen, verwenden Sie nicht das Schlüsselwort „new“, um ein

-Objekt zu erstellen,

// Aufrufen von a Funktion

Animal();

//Verwenden des Schlüsselworts „new“, um ein Objekt zu erstellen

new Animal(); 🎜>

Das innere „dies“ ist das gleiche wie das äußere „dies“, da

innerhalb der Funktion kein „dieses“-Objekt erstellt wird. es muss also

auf das Äußere verweisen

*/

> this.name = name; // 2. das innere „this“ ist also dasselbe

this.age = age; // eines der äußeren „this“. , nein 'dieses' erstellt

}



Denken: Wer ist „dies“ beim Aufruf einer Funktion? ?
Da der Funktionsaufruf das „this“-Objekt nicht generiert.
Ist es also nicht möglich, Animal direkt in Dog aufzurufen?
Antwort: Nein

Java-Code

/*

Zu welchem ​​„dies“ die aufgerufene Funktion gehört, das innere „dies“ darin von

bezieht sich die aufgerufene Funktion auf das „dieses“ Objekt

*/

Funktion Hund (Name, Alter){ // wenn aufgerufen Animal direkt,

Animal(name,age); // die Animal-Funktion gehört hier zu „window“,

} // also „this“ innerhalb von Animal-Referenzen auf „window“





Zweitens (formal):
Apply()-Funktion oder call()-Funktion verwenden

apply(): „dieses“ Objekt anwenden auf die (diese) Funktion anwenden, dann „dieses“ Objekt auf die Animal-Funktion anwenden.                                                                                      // Objekt, statt zu verweisen zu other 'this'.

}

d = new Dog('hello',20);

console.log(d); }

Alter: 20

Name: „Hallo“

__proto__:

Konstruktor: Funktion Hund (Name, Alter)

*/

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