Projektuję niektóre klasy hierarchii w JavaScript. Do tej pory działa dobrze, ale nie wiem, jak określić, czy obiekt jest "instancją" klasy nadrzędnej. Przykład:javascript oop, instanceof i klasa podstawowa
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();
kłody następująco:
first derivation is a Derivation1 : true
first derivation is a Derivation2 : false
first derivation is a BaseObject : false
podczas gdy second.sayWhoAmI();
kłody następująco:
second derivation is a Derivation1 : false
second derivation is a Derivation2 : true
second derivation is a BaseObject : false
czuję się zarówno first
i second
obiekt powinien mieć powiedzieć, że są przypadki BaseObject
.
Rozumiem, że JavaScript może nie być do tego stworzony, ale zastanawiam się, czy istnieje sposób, aby to osiągnąć.
Tylko wywołanie 'Base.apply (...)' nie instalacyjny dziedziczenia. Musisz poprawnie ustawić prototyp. Zobacz: http://jsfiddle.net/fkling/wJE6s/. Popatrz na to pytanie, aby uzyskać wyjaśnienie: http: // stackoverflow.com/questions/3145700/javascript-inheritance-instanceof-not-working? rq = 1 –
Felix, powinieneś napisać to jako odpowiedź, dokładnie tego potrzebuję, a twoje skrzypce po prostu to pokażą. Nie pozwól, by ktoś inny ukradł twoją reputację! – Johnny5
Uzgodniono, że powinien dodać odpowiedź, ale prawdopodobnie nie martwi się o zwiększenie swojego powtórzenia o 0,01%! – jahroy