2010-02-13 8 views
57

¿Cuál es la mejor/la mejor forma de extender una clase javascript para que la clase B herede todo de la clase A (clase B amplía A)?Javascript extends clase

+3

Actualy ... ¿hay alguna otra manera, pero b.prototype = new a; – xpepermint

+1

JavaScript no tiene clases. Por lo tanto, toda esta pregunta no tiene sentido. ¿Estás hablando de Java? ¿O ActionScript? Esos * do * tienen clases, pero no tienen absolutamente nada que ver con JavaScript. ¿O estás hablando de una biblioteca de JavaScript que implementa OO basado en clases en JavaScript, como MooTools, por ejemplo? En ese caso, la respuesta depende de la biblioteca de la que está hablando. –

+0

Existe mi objeto Clase: https://github.com/reduardo7/sjsClass/blob/master/sjsclass.js –

Respuesta

27

Douglas Crockford tiene unas muy buenas explicaciones de la herencia en JavaScript:

  1. prototypal inheritance: la forma 'natural' de hacer las cosas en JavaScript
  2. classical inheritance: más cerca de lo que se encuentra en la mayoría de los lenguajes orientados a objetos, pero tipo de corre a contrapelo de JavaScript
1
extend = function(destination, source) { 
      for (var property in source) { 
      destination[property] = source[property]; 
      } 
      return destination; 
    }; 

Extending JavaScript

También podría agregar filtros en el ciclo for.

+8

Esto no es lo que OP pidió ni corrigió "extender": debería iterar sobre Object.keys o al menos verificar si hasOwnProperty –

+0

Necesita hasOwnProperty compruebe y sobrescribirá los métodos y las propiedades si son iguales, sin la posibilidad de llamar al método de superclase más adelante. –

Cuestiones relacionadas