我正在設計一些JavaScript的類層次結構。到目前爲止它工作正常,但我看不出如何確定一個對象是否是父類的「實例」。例如:JavaScript的操作系統,instanceof和基類
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可能不是爲此製作的,但我想知道是否有辦法實現這一點。
只有調用'Base.apply(...)'不設置繼承。您必須正確設置原型。請參閱:http://jsfiddle.net/fkling/wJE6s/。也可以看看這個問題的解釋:http:// stackoverflow。com/questions/3145700/javascript-inheritance-instanceof-not-working?rq = 1 – 2012-07-26 01:37:29
Felix你應該把它寫成答案,這正是我需要的,你的小提琴只是簡單地演示它。不要讓別人竊取你的聲譽! – Johnny5 2012-07-26 01:56:23
同意他應該添加一個答案,但他可能不擔心提高他的代表0.01%! – jahroy 2012-07-26 02:06:57