Ich entwerfe einige Klassenhierarchie in JavaScript. Es funktioniert soweit gut, aber ich kann nicht sehen, wie zu bestimmen, ob ein Objekt eine "Instanz" einer Elternklasse ist. Beispiel:Javascript oop, instanceof und Basisklasse
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();
protokolliert diese:
first derivation is a Derivation1 : true
first derivation is a Derivation2 : false
first derivation is a BaseObject : false
während second.sayWhoAmI();
protokolliert diese:
second derivation is a Derivation1 : false
second derivation is a Derivation2 : true
second derivation is a BaseObject : false
Ich fühle mich wie sowohl first
und second
Objekt sollte sagen, dass sie Instanzen von BaseObject
sind.
Ich verstehe, dass JavaScript möglicherweise nicht dafür gemacht wird, aber ich frage mich, ob es einen Weg gibt, das zu erreichen.
Nur Aufruf 'Base.apply (...)' nicht Vererbung Setup. Sie müssen den Prototyp richtig einstellen. Siehe: http://jsfiddle.net/fkling/wJE6s/. Werfen Sie einen Blick auf diese Frage, um eine Erklärung zu erhalten: http: // stackoverflow.com/questions/3145700/javascript-vererbung-instanceof-nicht-arbeiten? rq = 1 –
Felix sollten Sie dies als Antwort schreiben, das ist genau das, was ich brauche und Ihre Geige demonstrieren es einfach. Lass niemanden deinen Ruf stehlen! – Johnny5
Einverstanden, er sollte eine Antwort hinzufügen, aber er macht sich wahrscheinlich keine Sorgen darüber, seinen Ruf um 0,01% zu steigern! – jahroy