javascript oop, instanceof и базовый класс

Я разрабатываю некоторую иерархию классов в JavaScript. Пока это работает нормально, но я не понимаю, как определить, является ли объект «экземпляром» родительского класса. Пример:

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();регистрирует это:

first derivation is a Derivation1 : true
first derivation is a Derivation2 : false
first derivation is a BaseObject : false

в то время как second.sayWhoAmI();регистрирует это:

second derivation is a Derivation1 : false
second derivation is a Derivation2 : true
second derivation is a BaseObject : false

Я чувствую, что оба объекта firstи secondдолжны были сказать, что они являются экземплярами BaseObject.

Я понимаю, что JavaScript не может быть создан для этого, но мне интересно, есть ли способ добиться этого.

11
задан SomeKittens 26 July 2012 в 01:40
поделиться