Übergeordnetes Element:
function Parent(name){ this.name=name; } Parent.prototype.sayHello=function(){ console.log("Hello,"+this.name); }
Prototypische Kettenvererbung
function Kid(){}; Kid.prototype=new Parent("who"); var k=new Kid(); console.log(k.name); //who console.log(k.sayHello()); //Hello,who
Nachteile : Parameter können beim Erstellen einer Instanz nicht an das übergeordnete Element übergeben werden
Konstruktionsvererbung
function Kid(name){ Parent.call(this,name); }; var k=new Kid("who"); console.log(k.name); //who console.log(k.sayHello()); //error
Nachteile: Das kann nicht abgerufen werden übergeordneter Prototyp Kettenattribut
Instanzvererbung
function Kid(name){ var p=new Parent(name); return p; }; var k=new Kid("who"); console.log(k.name); //who console.log(k.sayHello()); //Hello,who
Nachteile: Instanz ist eine Instanz des übergeordneten Elements
Vererbung kopieren
function Kid(name){ var p=new Parent(name); for(var item in p){ Kid.prototype[item]=p[item]; } } var k=new Kid("who"); console.log(k.name); //who console.log(k.sayHello()); //Hello,who
Nachteile: Beansprucht zu viel Speicher
Kombinierte Vererbung
function Kid(name){ Parent.call(this,name); } Kid.prototype=new Parent(); var k=new Kid("who"); console.log(k.name); //who console.log(k.sayHello()); //Hello,who
Nachteile:Der Konstruktor der übergeordneten Klasse wurde zweimal aufgerufen
Vererbung von Parasitenkombinationen
function Kid(name){ Parent.call(this,name); } (function(){ var p=function(){}; p.prototype=Parent.prototype; Kid.prototype=new p(); })()
Nachteile: Die Schreibmethode ist umständlicher
Das obige ist der detaillierte Inhalt vonEinführung in verschiedene Methoden der prototypischen Vererbung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!