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が作成されていない可能性があることは理解していますが、それを実現する方法があるのではないかと思います。