中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

js實現繼承的方法有哪些

js
小億
106
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. 寄生組合繼承:通過創建一個中間函數來實現繼承,并且在該中間函數中使用 Object.create() 方法來創建子類原型的副本,然后再將該副本設置為子類的原型。這樣可以避免調用父類構造函數兩次。例如:
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'

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

0
高州市| 瓮安县| 哈尔滨市| 岳阳县| 南充市| 洪江市| 赣州市| 肇东市| 河池市| 通榆县| 昌都县| 乌什县| 明星| 武宁县| 嵊泗县| 恩施市| 孝义市| 若尔盖县| 西畴县| 柳江县| 苏尼特左旗| 望江县| 夏河县| 沾益县| 南阳市| 团风县| 丹江口市| 元谋县| 郎溪县| 疏勒县| 长沙县| 潞城市| 泸定县| 温宿县| 仁怀市| 西乌珠穆沁旗| 平湖市| 子长县| 葫芦岛市| 富顺县| 黑山县|