要在Javascript中實現繼承,通常需要執行以下2個步驟;JavaScript繼承;調用和原型
說我有一個基類「動物」
var Animal = function(name){
this.name = name;
}
我現在想從同一個派生一個子類「狗」。所以我會說
var Dog = function(name) {
Animal.call(this,name);
}
所以我從我的派生類構造函數調用我的父類構造函數。 第二步是設置原型如下;
Dog.prototype = new Animal();
現在我可以從我的派生類Dog中訪問任何基類「動物」類屬性。
所以我的問題是爲什麼這兩個步驟是必要的? 如果我們只需要調用使用
Animal.call(this,name);
這還不夠實現繼承的基類的構造函數?
爲什麼我們也需要使用Dog.prototype = new Animal();
設置樣機屬性?
我想了解上述兩個步驟中的每一步是做什麼的?
你沒有任何東西*繼承*在這裏。 – jAndy 2013-03-07 08:03:07
因爲'動物'也可以使用原型鏈繼承。簡單地調用父構造函數將不會保留該繼承鏈。 – Sim 2013-03-07 08:03:22
真的說call()只是從基類繼承屬性,而第二步(設置原型)從基類繼承方法? – testndtv 2013-03-07 08:41:16