Estoy diseñando una jerarquía de clases en JavaScript. Hasta ahora funciona bien, pero no veo cómo determinar si un objeto es una "instancia" de una clase principal. Ejemplo:javascript oop, instanceof y clase base
function BaseObject(name){
this.name = name;
this.sayWhoAmI = function(){
console.log(this.name + ' is a Derivation1 : ' + (this instanceof Derivation1));
console.log(this.name + ' is a Derivation2 : ' + (this instanceof Derivation2));
console.log(this.name + ' is a BaseObject : ' + (this instanceof BaseObject));
};
}
function Derivation1(){
BaseObject.apply(this, ['first derivation']);
}
function Derivation2(){
BaseObject.apply(this, ['second derivation']);
}
var first = new Derivation1();
var second = new Derivation2();
first.sayWhoAmI();
registros de esto:
first derivation is a Derivation1 : true
first derivation is a Derivation2 : false
first derivation is a BaseObject : false
mientras second.sayWhoAmI();
registra esto:
second derivation is a Derivation1 : false
second derivation is a Derivation2 : true
second derivation is a BaseObject : false
Siento que tanto first
y second
objeto debe tener decir que son casos de BaseObject
.
Entiendo que JavaScript puede no estar hecho para esto, pero me pregunto si hay una forma de lograrlo.
Sólo llamar 'Base.apply (...)' ¿no herencia de configuración. Tienes que configurar el prototipo correctamente. Ver: http://jsfiddle.net/fkling/wJE6s/. También eche un vistazo a esta pregunta para obtener una explicación: http: // stackoverflow.com/questions/3145700/javascript-inheritance-instanceof-not-working? rq = 1 –
Félix debe escribir esto como respuesta, eso es exactamente lo que necesito y su violín lo demuestra de manera simple. ¡No dejes que otra persona te robe tu reputación! – Johnny5
De acuerdo, debería agregar una respuesta, pero probablemente no esté preocupado por aumentar su representante en .01%. – jahroy