溫馨提示×

js實現繼承的方法有哪些

js
小億
111
2023-08-04 13:33:03
欄目: 編程語言

在 JavaScript 中,有幾種方法可以實現繼承:

  1. 原型鏈繼承:通過將子類的原型對象設置為父類的一個實例來實現繼承。這樣子類就可以繼承父類的屬性和方法。例如:
function Parent() {
this.name = 'Parent';
}
Parent.prototype.sayHello = function() {
console.log('Hello');
}
function Child() {}
Child.prototype = new Parent();
const child = new Child();
console.log(child.name); // 輸出 'Parent'
child.sayHello(); // 輸出 'Hello'
  1. 構造函數繼承:通過在子類構造函數中調用父類構造函數來實現繼承。這樣子類就可以繼承父類的屬性,并且子類的每個實例都有自己的屬性的副本。但是,子類無法繼承父類的原型上的方法。例如:
function Parent() {
this.name = 'Parent';
}
Parent.prototype.sayHello = function() {
console.log('Hello');
}
function Child() {
Parent.call(this);
}
const child = new Child();
console.log(child.name); // 輸出 'Parent'
child.sayHello(); // 報錯:child.sayHello is not a function
  1. 組合繼承:通過同時使用原型鏈繼承和構造函數繼承來實現繼承。這樣子類就可以繼承父類的屬性和方法,并且子類的每個實例都有自己的屬性的副本。例如:
function Parent() {
this.name = 'Parent';
}
Parent.prototype.sayHello = function() {
console.log('Hello');
}
function Child() {
Parent.call(this);
}
Child.prototype = new Parent();
Child.prototype.constructor = Child;
const child = new Child();
console.log(child.name); // 輸出 'Parent'
child.sayHello(); // 輸出 'Hello'
  1. 寄生組合繼承:通過創(chuàng)建一個中間函數來實現繼承,并且在該中間函數中使用 Object.create() 方法來創(chuàng)建子類原型的副本,然后再將該副本設置為子類的原型。這樣可以避免調用父類構造函數兩次。例如:
function Parent() {
this.name = 'Parent';
}
Parent.prototype.sayHello = function() {
console.log('Hello');
}
function Child() {
Parent.call(this);
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;
const child = new Child();
console.log(child.name); // 輸出 'Parent'
child.sayHello(); // 輸出 'Hello'

這些都是常見的實現繼承的方法,每種方法都有自己的優(yōu)缺點,可以根據具體情況選擇合適的方法。

0