Estoy escribiendo un juego de plataforma simple usando javascript y html5. Estoy usando javascript de una manera OO. Para que la herencia funcione, estoy usando lo siguiente;Herencia de Javascript - instanceof no funciona?
// http://www.sitepoint.com/blogs/2006/01/17/javascript-inheritance/
function copyPrototype(descendant, parent) {
var sConstructor = parent.toString();
var aMatch = sConstructor.match(/\s*function (.*)\(/);
if (aMatch != null) { descendant.prototype[aMatch[1]] = parent; }
for (var m in parent.prototype) {
descendant.prototype[m] = parent.prototype[m];
}
};
Por el bien de esta publicación, considere el siguiente ejemplo;
function A() {
this.Name = 'Class A'
}
A.prototype.PrintName = function() {
alert(this.Name);
}
function B() {
this.A();
}
copyPrototype(B, A);
function C() {
this.B();
}
copyPrototype(C, B);
var instC = new C();
if (instC instanceof A)
alert ('horray!');
como lo entiendo yo esperaría a ver un cuadro de alerta horray, debido a que C es una instancia de C & B & A. ¿Me equivoco? ¿O solo estoy usando el método incorrecto para verificar? ¿O CopyPrototype ha manipulado el operador instanceof?
¡Gracias como siempre por tomarse el tiempo para leer esto!
Shaw.
Hola j03m, tienes razón, esa sería una gran solución en estos días, pero esta pregunta ya es bastante antigua , y en aquel entonces no había un amplio soporte para object.create, ya que esta era una nueva característica de la secuencia de comandos de ECMA 5 – Shawson
ah note a self, read timestamps. – j03m
¡es bueno tener una respuesta actualizada como referencia! :) – Shawson