Definieren Sie zunächst ein Objekt OBJ, und der Prototyp des Objekts ist obj._proto_. Wir können die GetPrototypeof -Methode in ES5 verwenden, um den Prototyp von OBJ abzufragen. Wir beweisen, ob der Prototyp von OBJ dem Objekt gleich ist. Prototyp, um zu beweisen, ob der Prototyp von OBJ existiert. Die Antwort kehrt wahr zurück, so dass sie existiert. Dann definieren wir eine Funktion foo (), und jede Funktion hat ihr Prototypobjekt, dh den Funktionsprototyp. Wir können dem Funktionsprototyp alle Attribute hinzufügen und seine Attribute dann durch ein neues sofortiges Objekt weitergeben (die folgenden beiden Beispiele werden ausführlich eingeführt).
Funktion foo () {} foo.prototype.z = 3; var obj = new foo (); obj.x = 1; obj.y = 2; obj.x //1obj.y //2obj.z // 3Typeof obj.toString; //functionObj.valueof (); // foo {x: 1, y: 2, z: 3} obj.hasownProperty ('z'); //FALSCHHier verweist der Prototypen (_Proto_) von OBJ auf die Prototyp -Eigenschaft der FOO -Funktion, der Prototyp von Foo.Prototyp zeigt auf Object.Prototyp und das Ende der Prototyp -Kette null. Durch HasownProperty können wir prüfen, ob sich das Z -Eigentum auf OBJ befindet. Es zeigt falsche. Es gibt keine Z -Eigenschaft auf OBJ, aber indem wir nach ihrer Prototypkette suchen, stellten wir fest, dass es sich um foo.prototypen handelt, also obj.z = 3, und für den ersten Fall obj.valueof () und das Tostring befinden sich beide auf dem Objekt. Natürlich außer dem folgenden Sonderfall,
var obj2 = object.create (null); obj2.Valueof (); //undefiniert
Object.create () erstellt ein leeres Objekt, und der Prototyp dieses Objekts zeigt auf die Parameter. Das folgende umfassende Beispiel zeigt, wie Sie eine Klasse implementieren, um eine andere Klasse zu erben
// eine Konstruktorpersonfunktion (Name, Alter) {this.name = name; this.age = Age;} Person.Prototype.hi = function () {console.log ('hi, mein Name ist' +this.name +', mein Alter ist' +this.age);}; Person.Prototype.legs_num = 2; Person.Prototype.arms_num = 2; ! ');}; Funktion student (Name, Alter, KlasseNum) {Person.call (this, Name, Alter); this.classnum = classNum;} // Erstellen Sie ein leeres Objektstudent. Student.Prototype.Constructor = Student; Student.Prototype.hi = function () {console.log ('hi, mein Name ist'+this.name+', mein Alter ist'+this.age+'und meine Klasse ist'+this.classnum);}; '+sub);}; // Ein Objekt bosnvar bosn = neuer Schüler (' bosn ', 27,' Klasse 3 '); bosn.hi (); // Hallo, mein Name ist Bosn, mein Alter ist 27 und meine Klasse ist Klasse 3Bosn.legs_num; //2bosn.walk (); // bosn geht! bosn.learns ('math'); // Bosn lernt MathematikDie Konstruktor -Person und die Schüler ist dieser Punkt auf das sofortige Objekt (BOSN) und der Prototyp dieses Objekts verweist auf den Prototyp des Konstruktors.
Wir verwenden die Methode von Object.create (), um ein leeres Objekt zu erstellen, und der Prototyp dieses Objekts ist Person.Prototyp. Der Vorteil des Schreibens besteht darin, dass wir jedes Attribut von Studnet.Prototype von uns selbst erstellen können, ohne die Person zu beeinflussen. Wenn Sie Person schreiben. Während des addiertem adds. -prototypen Attribute addiert, werden dieselben Attribute auch zur Prototyp -Kette der Person hinzugefügt.
Für die Anrufmethode im Konstruktorstudenten verweist diese Innere auf das sofortige Objekt des neu erstellten Schülers und erbt durch den Anruf.
Student.Prototype.Constructor = Student, die Bedeutung dieses Satzes besteht darin, festzustellen, dass der Schüler die Funktion ist, die das Objekt des Schülers erstellt. Wenn Sie diesen Satz nicht schreiben, ist die Funktion des Objekts immer noch eine Person.
Es gibt drei Möglichkeiten, die Erbschaft umzusetzen.
Funktionsperson (Name, Alter) {this.name = name; this.age = Age;} function Student () {} student.prototype = Person.Prototyp; //1student.Prototype = Object.create (Person.Prototype); //2student.Prototype = new Person (); // 3Die obige JS -Prototyp -Kette und die Vererbungsanalyse (erste Erfahrung) ist der gesamte Inhalt, den ich mit Ihnen teile. Ich hoffe, Sie können Ihnen eine Referenz geben und ich hoffe, Sie können wulin.com mehr unterstützen.