根據Douglas Crockford的說法,我可以使用類似於http://javascript.crockford.com/prototypal.html(稍微調整一下)的東西......但我對使用jQuery的方式感興趣。使用$ .extend是不錯的做法?如何使用jQuery實現多重繼承extend
我有4類:
var A = function(){ }
A.prototype = {
name : "A",
cl : function(){
alert(this.name);
}
}
var D = function(){}
D.prototype = {
say : function(){
alert("D");
}
}
var B = function(){} //inherits from A
B.prototype = $.extend(new A(), {
name : "B"
});
var C = function(){} //inherits from B and D
C.prototype = $.extend(new B(), new D(), {
name : "C"
});
var o = new C();
alert((o instanceof B) && (o instanceof A) && (o instanceof C)); //is instance of A, B and C
alert(o instanceof D); //but is not instance of D
所以,我可以調用每一個方法,屬性......從A,B,C和D的問題來了,當我想測試,如果o是實例d?我怎樣才能克服這個問題?
只要注意一下,實際上,在鴨子型語言中,你很少關心對象是否是實例。你爲什麼要檢查instanceof D?請注意,通常你真正需要的是http://en.wikipedia.org/wiki/Mixin – 2013-03-11 15:11:48
多重繼承不適用於'instanceof',因爲對象只能有一個線性原型鏈。 – Bergi 2013-03-11 16:11:36