Heim >Web-Frontend >js-Tutorial >Javascript spielt mit Vererbung (1)_Javascript-Fähigkeiten

Javascript spielt mit Vererbung (1)_Javascript-Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 16:49:021226Durchsuche

Ich denke, jeder hat seine eigene Meinung darüber, ob Javascript eine objektorientierte Sprache oder eine Sprache ist, die Objekte unterstützt. Die treuen Fans von Javascript müssen sagen, dass Javascript eine objektorientierte Sprache ist. Das Buch „The Return of the King of Javascript“ beschreibt beispielsweise Javascript als objektorientiert, basierend auf Prototypen. Lassen Sie mich meine persönliche Meinung mitteilen. Die drei Merkmale Objektorientierung, Vererbung, Polymorphismus und Kapselung sind zwar nicht so schnell zu implementieren wie objektorientierte Sprachen wie Java und C#, bieten aber dennoch eine gewisse Unterstützung. Daher ist es sinnvoll zu sagen, dass Javascript eine objektorientierte Sprache ist. Aus Sicht der Vererbung gibt es jedoch eine Reihe von Vererbungsmethoden, aber jede Vererbungsmethode kann nicht die Leistungsfähigkeit einer echten objektorientierten Sprache realisieren. Es wird gesagt, dass es objektorientiert ist. Zusammenfassend ist mein Verständnis von Javascript so, dass ich es lieber als vereinfachtes objektorientiertes oder „Pseudo“-objektorientiertes (dieses Pseudowort hat keine abfällige Bedeutung) bezeichne.

Heute werden wir über das erste Merkmal der Objektorientierung sprechen: Vererbung.
Was ist Vererbung? Ich möchte darüber keinen Unsinn reden. Es gibt ein Tier, eine Person und ein Mädchen. Dies ist die einfachste und typischste Vererbungskette.
In objektorientierten Sprachen wie C# ist das einfach.

Code kopieren Der Code lautet wie folgt:

Klasse Tier
{ }
Klasse Menschen:Tier
{ }
Klasse Mädchen:Menschen
{ }

In Javascript gibt es also keine Klasse oder Vererbung, um die Implementierung bereitzustellen. Was sollen wir tun?
Objekttarnung (Konstruktionsvererbungsmethode)
Was ist Objekttarnung? Um das Verständnis zu erleichtern, könnten wir es strukturelle Vererbung nennen. Wie der Name schon sagt, verwenden Sie Konstruktoren, um mit der Vererbung zu spielen. Tatsächlich bedeutet dies, dass der Konstruktor der übergeordneten Klasse als gewöhnliche Methode betrachtet und im Konstruktor der Unterklasse ausgeführt wird. In diesem Fall kann das Objekt der Unterklasse beim Erstellen des Objekts natürlich die Methode des erstellen Elternklasse!

Unter Verwendung des obigen Beispiels lautet der Code wie folgt:

Code kopieren Der Code lautet wie folgt:

Funktion Animal()
{
         .Run=function(){alert("I can run");};
}
function People(name)
{
//Hier wird der Konstruktor der übergeordneten Klasse übergeben in und führen Sie dann die Konstruktormethode der übergeordneten Klasse aus. Zu diesem Zeitpunkt können // Sie die Methoden in der übergeordneten Klasse verwenden.
this.father=Animal;
this.father();
// Denken Sie daran, eine Methode mit demselben Namen zur übergeordneten Klasse hinzuzufügen Klasse.
delete this.Father;
this.name=name;
this.Say=function(){alert("Mein Name ist " this.name);}
}
function Girl (Name, Alter)
this.father=People;
this.father(name);
this.age=age; Introduce=function(){alert("Mein Name ist " this.name ".Ich bin " this.age);}



In diesem Fall wird eine Vererbungskette implementiert:

Code kopieren

Der Code lautet wie folgt:var a=new Animal( a .Run(); var p=new People("Windking");
p.Say();
var g=new Girl(" Xuan", 22);
g.Run();
g.Say();
g.Introduce();

Die Ergebnisse sind wie folgt:

a.

b.

c.

d.

z.B.

f.

Test erfolgreich!

Lassen Sie uns die wichtigsten Punkte dieses Codes zusammenfassen, die übergeordnete Klasse angeben, das übergeordnete Klassenobjekt deklarieren und dann die temporären Variablen löschen. Finden Sie es problematisch? Zumindest denke ich, dass man, wenn man das Löschen vergisst, immer noch das Risiko tragen muss, dass die übergeordnete Klasse geändert wird. Dafür verwenden wir call und apply, um dies zu verbessern!
Sehen wir uns den Code an, immer noch das obige Beispiel (um es für alle verständlicher zu machen, wurden die Anforderungen geändert, Animal hat einen Namen):

Code kopieren Der Code lautet wie folgt:

Funktion Tier(name)
{
this.Run=function(){alert("I can Run");};
}
function People(name)
{
//Verwenden Sie die Aufrufmethode, um die Vererbung zu implementieren
this.father=Animal;
this.father.call(this,name);
this.name=name;
this.SayName=function(){alert("Mein Name ist" this.name;) ;};
}
function Girl(name,age)
{
//Verwenden Sie die Apply-Methode, um die Vererbung zu implementieren
this.father=People; this.father.apply( this,new Array(name));
this.age=age;
this.Introduce=function(){alert("Mein Name ist " this.name ".Ich bin " this.age);} ;
}

Bei Verwendung desselben Testcodes wurde festgestellt, dass der Test gleichermaßen erfolgreich war.

Wenn Sie ein Anfänger sind, sind Sie möglicherweise etwas verwirrt, nachdem Sie sich die folgenden beiden Codeteile angesehen haben: Was ist Aufruf und was ist Anwenden? Nun, zum Thema „Spielen mit Vererbung“ habe ich eine Ergänzungsreihe hinzugefügt. Wenn Sie das nicht verstehen, können Sie meinen Artikel „Spielen mit Methoden: Aufrufen und Anwenden“ lesen.

Objekttarnung ist nur eine Möglichkeit, Vererbung zu erreichen. Im nächsten Artikel werde ich weiterhin über andere Vererbungsmethoden und die Vor- und Nachteile verschiedener Vererbungsmethoden schreiben.

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