Nach der Definition der W3C School ist Javascript eine objektorientierte Sprache, obwohl es überall Objekte gibt. Es ist verständlich, dass es nur eine Definition, aber keine Deklaration gibt, und es kann direkt verwendet werden . Jedes darin enthaltene Objekt kann als eine Kombination von Schlüsselwerten verstanden werden.
Anbei finden Sie eine Beschreibung der W3C School:
Anforderungen für objektorientierte Sprachen
Eine objektorientierte Sprache muss bieten Entwicklern vier grundlegende Funktionen:
Kapselung – Die Fähigkeit, verwandte Informationen (entweder Daten oder Methoden) in Objekten zu speichern
Aggregation – Die Fähigkeit, ein Objekt in einem anderen Objekt zu speichern
Vererbung – Von einer anderen Klasse abgeleitet ( oder Klassen) Die Fähigkeit von Klasseneigenschaften und -methoden
Polymorphismus – die Fähigkeit, Funktionen oder Methoden zu schreiben, die auf mehrere Arten ausgeführt werden können
ECMAScript unterstützt diese Anforderungen und kann daher als objektorientiert betrachtet werden.
Das Folgende ist eine relativ reguläre Objektdefinition (die folgenden Beispiele beziehen sich auf <
var person = new Object();
person .name = "Horky";
person.age = 40;
person.job = "Software Engineer";
person.sayName = function(){
document.write (this .name);
}
Aufrufmethode:
person.sayName();
document.write("
Age: ");Nun ja, alle Eigenschaften sind öffentlich und es gibt zwei verschiedene Möglichkeiten, auf Eigenschaften zuzugreifen (Einschränkungen der Zugänglichkeit können durch die Attribute der Eigenschaft festgelegt werden.)
Eine andere Möglichkeit, Schlüsselwerte zu definieren ist lockerer und auf den Punkt gebracht, wird aber von älteren Browserversionen möglicherweise nicht unterstützt:
var person = (
Name: „Horky“,
Alter: 40,
Job: „Software Engineer“ ,
sayName: function(){
document.write(this.name);
}
};
Da es sich bei Javascript-Variablen um lose Typen handelt, Um es ganz klar auszudrücken: Es handelt sich um einen anarchischen Typ. Daher ist es nicht notwendig, zu Beginn keine vollständige Definition anzugeben, aber es ist auch wie folgt zulässig (zur Demonstration erforderlich, niemals empfohlen):
var person = neues Objekt ();
person.name = "Horky";
person.sayName = function()
{
document.write(this.name);
}
person.sayName();
person.age = 40;
document.write("
ist nicht unbegrenzt. Wenn der erste Satz wie folgt geändert wird, funktioniert er nicht:
var person = "Undefiniert";
Der Grund dafür ist, dass der grundlegende Datentyp in Javascript ziemlich ist Im Gegensatz zu Referenztypen. Lassen Sie uns die zuvor erwähnten objektorientierten Funktionen überprüfen. Über den dritten Punkt werden wir natürlich sprechen Tatsächlich ist es etwas weit hergeholt. Ich persönlich denke, es ähnelt eher einer Funktion mit variablen Parametern in C/C++, da die Parameter einer Funktion sehr willkürlich sein können JavaScript ist zu faul, um es einzuschränken. Das Ergebnis ist Polymorphismus:
{
this.name = "Mr Nobody!" ;
this.age = 0;
this.job = "Schwer zu sagen!";
switch(arguments.length)
Fall 3:
this .job = job;
Fall 2:
this.age = age;
Fall 1:
this.name = name;
break;
}
this.introduceSelf = function()
{
document.write("
var none = new Person();
Diese Funktion Person() ist eine Konstruktorfunktion, die ein Person-Objekt erstellt und zurückgibt. Basierend auf den verschiedenen übergebenen Parametern werden verschiedene Initialisierungen durchgeführt in, was eine Art Polymorphismus ist.
Erweitern Sie ein wenig, wenn ein Objekt übergeben wird. Dies ist das Muster der prototypischen Vererbung (siehe <
function object(o)
{
function F() {};
F.prototype = o;
return new F();
}
Dann probieren Sie die folgenden zwei neuen Objekte aus:
var horky_alias = object(horky);
var arthas_alias = object(horky, {name:{value:"Arthas"}});
Beim Kopieren Horky, der Name des zweiten Objekts wurde ebenfalls geändert. Aufgrund der Existenz dieses speziellen Zeigers ist all dies möglich. Dies ist ein Zeiger auf ein Objekt, und dieses Objekt enthält Attribute und Methoden, die von allen Instanzen gemeinsam genutzt werden können.
{
this.sex = "Male";
this.prototype = new Person(name, age, job);
this.introduceSelf = function()
{
this.prototype.introduceSelf();
document.write("