js繼承方式
阿新 • • 發佈:2020-09-07
原型繼承
將子建構函式的prototype指向父建構函式的例項達到繼承的目的
;
function Person(name){ this.name = name; this.country='china'; } Person.prototype.play = function(){ } function Child(age){ this.age = age; } Child.prototype = new Person();
缺點:
建立子類例項時,但是無法給父建構函式傳參
來自原型物件的引用屬性是所有例項共享的
建構函式繼承
在子類建構函式中呼叫父類建構函式
function Person(name){ this.name = name; this.country='china'; } Person.prototype.play = function(){ } function Child(name,age){ this.age = age; Person.call(this,name) } var obj = new Child('小明',16);
缺點:
- 當於每個例項都拷貝了一份父類的方法,佔用記憶體大
不能繼承原型屬性/方法,只能繼承父類的例項屬性和方法
組合式繼承
使用原型鏈實現對原型屬性和方法的繼承,通過借用建構函式實現對例項屬性的繼承
function Person(name){ this.name = name; this.country='china'; } Person.prototype.play = function(){ } function Child(name,age){ Person.call(this,name); this.age = age; } Child.prototype = new Person();
缺點:
會呼叫兩次父類建構函式