2010-02-13 4 views
57

Quelle est la bonne/meilleure façon d'étendre une classe javascript afin que la classe B hérite de tout de la classe A (classe B étend A)?Javascript étend la classe

+3

Actuellement ... existe-t-il un autre moyen, mais b.prototype = new a; – xpepermint

+1

JavaScript n'a pas de cours. Par conséquent, toute cette question n'a pas de sens. Parlez-vous de Java? Ou ActionScript? Ceux-ci * ont * des classes, mais ils n'ont absolument rien à voir avec JavaScript. Ou parlez-vous d'une bibliothèque JavaScript qui implémente l'OO basé sur les classes en JavaScript, comme MooTools par exemple? Dans ce cas, la réponse dépend de la bibliothèque dont vous parlez. –

+0

Il y a mon objet Class: https://github.com/reduardo7/sjsClass/blob/master/sjsclass.js –

Répondre

27

Douglas Crockford a quelques très bonnes explications d'héritage en JavaScript:

  1. prototypal inheritance: la voie « naturelle » de faire les choses en JavaScript
  2. classical inheritance: plus proche de ce que vous trouverez dans la plupart des langages OO, mais court sorte de contre le grain de JavaScript
1
extend = function(destination, source) { 
      for (var property in source) { 
      destination[property] = source[property]; 
      } 
      return destination; 
    }; 

Extending JavaScript

Vous pouvez également ajouter des filtres dans la boucle for.

+8

Ceci n'est ni ce que OP a demandé ni correct "extend" - vous devriez parcourir iter.keys ou au moins vérifier hasOwnProperty –

+0

Besoins hasOwnProperty vérifie et écrase les méthodes et les propriétés si elles sont identiques, sans possibilité d'appeler la méthode super classe plus tard. –

Questions connexes