Heim > Artikel > Web-Frontend > Ausführliche Erläuterung von Anwendungsbeispielen der JavaScript-Vererbung: prototypische Vererbung, parasitäre Vererbung und parasitäre kombinierte Vererbung
Prototypische Vererbung
Die Implementierungsmethode der prototypischen Vererbung unterscheidet sich von der der gewöhnlichen Vererbung, sondern basiert auf Prototypen, die Sie erstellen können Neue Objekte basierend auf vorhandenen Objekten, ohne dass benutzerdefinierte Typen erstellt werden müssen. Der spezifische Code lautet wie folgt:
function object(o) { function F() {} F.prototype = o; return new F(); }
Codebeispiel:
/* 原型式继承 */ function object(o) { function F() {} F.prototype = o; return new F(); } var person = { name : 'wuyuchang', friends : ['wyc', 'Nicholas', 'Tim'] } var anotherPerson = object(person); anotherPerson.name = 'Greg'; anotherPerson.friends.push('Bob'); var anotherPerson2 = object(person); anotherPerson2.name = 'Jack'; anotherPerson2.friends.push('Rose'); alert(person.friends); // wyc,Nicholas,Tim,Bob,Rose
Parasitär Vererbung
/* 寄生式继承 */ function createAnother(original) { var clone = object(original); clone.sayHi = function() { alert('hi'); } return clone; }
Verwendungsbeispiel:
/* 原型式继承 */ function object(o) { function F() {} F.prototype = o; return new F(); } /* 寄生式继承 */ function createAnother(original) { var clone = object(original); clone.sayHi = function() { alert('hi'); } return clone; } var person = { name : 'wuyuchang', friends : ['wyc', 'Nicholas', 'Rose'] } var anotherPerson = createAnother(person); anotherPerson.sayHi();
Parasitäre kombinatorische Vererbung
Die Implementierung der Vererbung im kombinierten Modus in JavaScript hat ihre eigenen Mängel. Die Implementierungsidee besteht darin, dass der Konstruktor Eigenschaften erbt und die Vererbungsmethode in gemischter Form in der Prototypkette erfolgt muss nicht verwendet werden. Instanziieren Sie beim Erben einer Methode den Konstruktor des übergeordneten Typs. Der Code lautet wie folgt:
function object(o) { function F() {} F.prototype = o; return new F(); } /* 寄生组合式继承 */ function inheritPrototype(subType, superType) { var prototype = object(superType.prototype); prototype.constructor = subType; subType.prototype = prototype; }
Bei der Verwendung müssen Sie nur die Codezeile „SubType.prototype = new SuperType();“ ersetzen Kombinationsmodus mit inheritPrototype( subType, superType); das war's. Die hohe Effizienz der parasitären kombinierten Vererbung spiegelt sich darin wider, dass der Konstruktor des übergeordneten Typs nur einmal aufgerufen wird, wodurch die Erstellung unnötiger oder redundanter Eigenschaften vermieden wird. Gleichzeitig bleibt die Prototypenkette unverändert, sodass „instanceof“ und „isPrototypeof()“ weiterhin normal verwendet werden können. Dies ist derzeit die idealste Vererbungsmethode, und wir stellen derzeit auf dieses Modell um. (YUI verwendet dieses Muster ebenfalls.)
Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung von Anwendungsbeispielen der JavaScript-Vererbung: prototypische Vererbung, parasitäre Vererbung und parasitäre kombinierte Vererbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!