摘要:借用構(gòu)造函數(shù)借助或使用構(gòu)造函數(shù)缺少函數(shù)復(fù)用原型鏈繼承使用指向?qū)ο笞宇悷o(wú)法給父類傳遞參數(shù)無(wú)法使用字面量添加新方法所有子類對(duì)象共享父類所有方法和屬性引用類型組合繼承借用構(gòu)造函數(shù)對(duì)實(shí)例屬性繼承對(duì)共享方法繼承會(huì)調(diào)用兩次父類構(gòu)造函數(shù)繼承
借用構(gòu)造函數(shù),借助call或apply,使用Superclass構(gòu)造函數(shù),缺少函數(shù)復(fù)用
function Superclass(name = "default") { this.name = name; } function Subclass(age = 22, name) { this.age = age; Superclass.call(this, name); this.say = function () { console.log(`this.name=${this.name}...this.age=${this.age}`); }; } const test = new Subclass(23); test.say(); console.log(`test instanceof Subclass`, test instanceof Subclass); console.log(`test instanceof Superclass`, test instanceof Superclass); console.log(test.__proto__.constructor); console.log(Subclass.prototype.constructor);
原型鏈繼承,使用prototype指向Superclass對(duì)象,子類無(wú)法給父類傳遞參數(shù),無(wú)法使用字面量添加新方法,所有子類對(duì)象共享父類所有方法和屬性(引用類型)
function Superclass(name = "default") { this.name = name; this.colors = ["r", "y"]; } function Subclass(age = 22) { this.age = age; this.say = function () { console.log(`this.name=${this.name}...this.age=${this.age}`); }; } Subclass.prototype = new Superclass(); Subclass.prototype.constructor = Subclass; const test = new Subclass(23); const test1 = new Subclass(24); test.colors.push("b"); console.log(test.colors); console.log(test1.colors); test.say(); test1.say(); console.log(`test instanceof Subclass`, test instanceof Subclass); console.log(`test instanceof Superclass`, test instanceof Superclass); console.log(test.__proto__.constructor); console.log(Subclass.prototype.constructor);
組合繼承,prototype+call/apply,借用構(gòu)造函數(shù)對(duì)實(shí)例屬性繼承,prototype對(duì)共享方法繼承,會(huì)調(diào)用兩次父類構(gòu)造函數(shù)
function Superclass(name = "default") { this.name = name; } Superclass.prototype.say = function () { console.log(this.name); }; function Subclass(age = 22, name) { this.age = age; Superclass.call(name); } Subclass.prototype = new Superclass(); Subclass.prototype.constructor = Subclass; const test = new Subclass(23); test.say(); console.log(`test instanceof Subclass`, test instanceof Subclass); console.log(`test instanceof Superclass`, test instanceof Superclass); console.log(test.__proto__.constructor); console.log(Subclass.prototype.constructor);
ES6 Class繼承
class Superclass { constructor(name = "default") { this.name = name; } } class Subclass extends Superclass { constructor(age = 22, name) { super(name); this.age = age; } say() { console.log(`this.name=${this.name}...this.age=${this.age}`); } } const test = new Subclass(23); test.say(); console.log(`test instanceof Subclass`, test instanceof Subclass); console.log(`test instanceof Superclass`, test instanceof Superclass); console.log(test.__proto__.constructor); console.log(Subclass.prototype.constructor);
Node util.inherits;
function Superclass(name = "default") { this.name = name; } function Subclass(age = 22, name) { this.age = 22; Superclass.call(this, name); this.say = function () { console.log(`this.name=${this.name}...this.age=${this.age}`); }; } require("util").inherits(Subclass, Superclass); const test = new Subclass(23); test.say(); console.log(`test instanceof Subclass`, test instanceof Subclass); console.log(`test instanceof Superclass`, test instanceof Superclass); console.log(test.__proto__.constructor); console.log(Subclass.prototype.constructor);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/81456.html
摘要:一實(shí)體類的定義定義類有參構(gòu)造方法二定義方法以設(shè)置實(shí)體類的屬性值方法三定義方法以獲取實(shí)體類的屬性值方法四構(gòu)造實(shí)例對(duì)象使用全參構(gòu)造方法獲取實(shí)例對(duì)象桐人男控制臺(tái)打印實(shí)例 一、Node.js 實(shí)體類 的定義 //定義類Person 有參構(gòu)造方法 function Person(name, sex, age, addr, salary) { this.name = name; t...
摘要:為指定事件注冊(cè)一個(gè)監(jiān)聽(tīng)器,接受一個(gè)字符串和一個(gè)回調(diào)函數(shù)。發(fā)射事件,傳遞若干可選參數(shù)到事件監(jiān)聽(tīng)器的參數(shù)表。為指定事件注冊(cè)一個(gè)單次監(jiān)聽(tīng)器,即監(jiān)聽(tīng)器最多只會(huì)觸發(fā)一次,觸發(fā)后立刻解除該監(jiān)聽(tīng)器。 1.Node.js 簡(jiǎn)介 Node.js 其實(shí)就是借助谷歌的 V8 引擎,將桌面端的 js 帶到了服務(wù)器端,它的出現(xiàn)我將其歸結(jié)為兩點(diǎn): V8 引擎的出色; js 異步 io 與事件驅(qū)動(dòng)給服務(wù)器帶來(lái)極高...
摘要:系列種優(yōu)化頁(yè)面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁(yè)性能管理詳解離線緩存簡(jiǎn)介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問(wèn)性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁(yè)面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁(yè)性能管理詳解 HTML5 ...
摘要:系列種優(yōu)化頁(yè)面加載速度的方法隨筆分類中個(gè)最重要的技術(shù)點(diǎn)常用整理網(wǎng)頁(yè)性能管理詳解離線緩存簡(jiǎn)介系列編寫高性能有趣的原生數(shù)組函數(shù)數(shù)據(jù)訪問(wèn)性能優(yōu)化方案實(shí)現(xiàn)的大排序算法一怪對(duì)象常用方法函數(shù)收集數(shù)組的操作面向?qū)ο蠛驮屠^承中關(guān)鍵詞的優(yōu)雅解釋淺談系列 H5系列 10種優(yōu)化頁(yè)面加載速度的方法 隨筆分類 - HTML5 HTML5中40個(gè)最重要的技術(shù)點(diǎn) 常用meta整理 網(wǎng)頁(yè)性能管理詳解 HTML5 ...
閱讀 3440·2021-11-22 09:34
閱讀 728·2021-11-19 11:29
閱讀 1409·2019-08-30 15:43
閱讀 2291·2019-08-30 14:24
閱讀 1918·2019-08-29 17:31
閱讀 1287·2019-08-29 17:17
閱讀 2675·2019-08-29 15:38
閱讀 2849·2019-08-26 12:10