2010-02-13 10 views
57

Was ist der richtige/beste Weg, um eine JavaScript-Klasse zu erweitern, so dass Klasse B alles von der Klasse A erbt (Klasse B erweitert A)?Javascript erweitert Klasse

+3

Aktual ... gibt es einen anderen Weg als b.prototype = new a; – xpepermint

+1

JavaScript hat keine Klassen. Daher macht diese ganze Frage keinen Sinn. Sprichst du über Java? Oder ActionScript? Diese * haben * Klassen, aber sie haben absolut nichts mit JavaScript zu tun. Oder sprichst du von einer JavaScript-Bibliothek, die klassenbasiertes OO in JavaScript implementiert, wie zum Beispiel MooTools? In diesem Fall hängt die Antwort davon ab, von welcher Bibliothek Sie sprechen. –

+0

Es gibt mein Klassenobjekt: https://github.com/reduardo7/sjsClass/blob/master/sjsclass.js –

Antwort

27

Douglas Crockford hat einige sehr gute Erklärungen der Vererbung in JavaScript:

  1. prototypal inheritance: die 'natürliche' Art und Weise, Dinge zu tun, in JavaScript
  2. classical inheritance: näher an, was Sie in den meisten OO-Sprachen finden, aber Art läuft von gegen den Strich JavaScript
1
extend = function(destination, source) { 
      for (var property in source) { 
      destination[property] = source[property]; 
      } 
      return destination; 
    }; 

Extending JavaScript

Sie könnten auch Filter in die for-Schleife einfügen.

+8

Dies ist weder was OP gefragt noch korrigieren "erweitern" - Sie sollten über Object.keys iterieren oder zumindest nach hasOwnProperty –

+0

Needs hasOwnProperty überprüfen und überschreiben Methoden und Eigenschaften, wenn sie identisch sind, ohne dass die Superklassenmethode später aufgerufen werden kann. –