1. 程式人生 > 實用技巧 >js繼承方式

js繼承方式

原型繼承

將子建構函式的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();

 缺點:

  • 會呼叫兩次父類建構函式

原型式繼承

寄生式繼承

寄生組合式繼承

ES6繼承

原拷貝繼承