2010-05-06 12 views
9

¿Hay alguna manera de acceder al súper objeto al extender objetos usando $ .extend?JQuery - Extender y acceder a la superclase

Me gustaría extender un objeto, anular un método, pero llamar al método de superclase anulado en el método de la subclase.

Respuesta

6

No, porque no hay una superclase. De acuerdo con los documentos para jQuery.extend:

Descripción: Combine los contenidos de dos o más objetos juntos en el primer objeto.

Con el fin de llamar a un método "superclase", que tendría que mantener una copia de la "superclase" en alguna parte (tal vez como un parámetro en el objeto "descendiente"), y llame al método directamente en el "superclase".

+0

supongo que sólo estoy extendiendo un objeto con otro, y no se trata de clases de la manera Mootools lo hace, entonces eso tendría sentido. – Steve

3

Si está buscando herencia de Javascript, puede estar interesado en this post de John Resig.

+0

Aunque es bastante interesante, me arriesgaré a sonar tonto diciendo que todo parece un plan para implementar en javascript desde 2008. ¿Tendría alguna referencia sobre cómo se implementó, si realmente fue así? – cregox

1

No directamente: el método anterior ya no está disponible (excepto en el objeto original).

que he hecho dos cosas: La primera es hacer una copia del método de edad con un nuevo nombre en la subclase:

var Super = { 
    a: function() {...} 
}; 

var _SubFuncs: { 
    _superA: Super.a 

    a: function() {... this._superA(...) ... } 
}; 

var Sub = $.extend(false, Super, _SubFuncs); 

La otra cosa que he hecho en su caso es el uso de la patrón de plantilla y hacer que la clase superior llame a un método que no tiene ningún comportamiento. La subclase luego agrega comportamiento al método vacío. Esto solo funciona si su estructura de llamadas es tal que se pueden agregar "agujeros" de manera apropiada.

Editar: En mi caso, realmente estaba tratando de seguir con los objetos del prototipo, así que estaba evitando una solución general que hace que mis objetos sean más parecidos a las clases.

Cuestiones relacionadas