Estoy luchando con Javascript Herencia clásica1. Mientras, en el extremo Douglas Crockford, rechaza sus primeros intentos para apoyar modelo clásico en Javascript, me parece interesante para comprender:Javascript Parasitic Herencia
I have been writing JavaScript for 8 years now, and I have never once found need to use an uber function. The super idea is fairly important in the classical pattern, but it appears to be unnecessary in the prototypal and functional patterns. I now see my early attempts to support the classical model in JavaScript as a mistake.
Sin embargo, hay algo que no muy clara en lo que concierne Herencia parasitaria :
function ZParenizor2(value) {
var that = new Parenizor(value);
that.toString = function() {
if (this.getValue()) {
return this.uber('toString');
}
return "-0-"
};
return that;
}
ZParenizor, según lo que he entendido se define en términos de Parenizor. Pero Parenizor es la clase base y hereda de nadie. Así que la función this.uber
no estará definida y de hecho tengo un error cuando llamo al método toString
de un nuevo objeto ZParenizor2.
¿Estoy correcto o estoy ignorando algo?
ACTUALIZACIÓN Tenía razón. Este método solo funciona cuando crea ZParenizor con 0 como parámetro, ya que no necesita llamar al método uber
(como puede ver en la implementación del método).
Cuando intenta con un parámetro diferente, me sale este error:
Uncaught TypeError: Object #<error> has no method 'uber'
Todos los objetos heredan al menos de 'Object.prototype' ... –
Bien, ¿qué dice el error? –
Sí. El error no se debió a lo que yo pensé, sino a un error tipográfico. Sin embargo, no he pensado en el hecho de que todos los objetos heredan de las Funciones que son objetos. ¡Gracias! – user278064