js繼承之一(借用建構函式)

2022-09-08 19:12:17 字數 382 閱讀 4277

現在,已經知道了原型物件,原型鏈的實現,原型鏈式繼承的缺陷;那麼如何避免這個缺陷?

//定義乙個carmodel類

function carmodel(c)

}//car類有自己的屬性,比如品牌

function car(brand)

}var car1=new car("豐田");

console.log(car1);

達到的效果相當於,子類拷貝了乙份父類的方法和屬性,加上自己的方法和屬性;

優點:解決了原型鏈式繼承中,修改父類引用屬性的問題

能夠向父類建構函式傳遞引數了

缺點:例項並不是父類的例項,只是子類的例項!

無法實現函式復用,每個子類都有父類例項函式的副本

借用構造函式呼叫繼承

function father name,age 這樣直接呼叫,那麼father中的this只的是 window。因為其實這樣呼叫的 window.father 李四 20 name 和age 屬性就新增到了window屬性上 father 李四 20 alert name window.name ...

借用建構函式實現繼承

在子型別建構函式的內部呼叫超型別的建構函式 function supertype function subtype var instance1 new subtype instance1.colors.push yellow console.log instance1.colors var inst...

繼承方式二 借用建構函式

function supertype function subtype var instance1 newsubtype instance1.colors.push black console.log instance1.colors red blue green black var instanc...