ES6類繼承的原始碼是怎樣實現的呢???

2021-10-08 13:08:38 字數 1359 閱讀 2573

es6繼承

class

asaya()

static

privatea()

}class

bextends

asayb()

}let b =

newb

('名字',21

);b.saya()

;b.privatea()

;console.

log(b.name+b.age)

;

轉成es5後

"use strict"

;function

_inheritsloose

(subclass, superclass)

//subclass.__proto__ = superclass;作為例項繼承父類的私有屬性。

vara

=/*#__pure__*/

function()

var _proto =

a.prototype;

_proto.

saya

=function

saya()

;a.privatea

=function

privatea()

;returna;

}();

varb

=/*#__pure__*/

function

(_a)

var _proto2 =

b.prototype;

_proto2.

sayb

=function

sayb()

;returnb;

}(a)

;var b =

newb

('名字',21

);b.saya()

;b.privatea()

;console.

log(b.name + b.age)

;

我們都知道:es6類的繼承,是將父類的私有屬性繼承到自身私有屬性;原型屬性繼承到原型上;但是呢?你知道父類的類屬性方法會被繼承嗎?整合到**嗎?,答:父類的類屬性方法會被整合到子類的原型鏈上__proto__上。

當整個過程完成繼承後,子類b和父類a形成這樣的關係,?

es6 類的繼承

function animal name animal.prototype.drink function animal.prototype.eat function item function dog name,breed animal.prototype dog.prototype animal....

ES6 類的繼承

類的繼承 super 關鍵字 子類通過 extends 關鍵字來繼承父類的所有屬性和方法 子類必須在constructor中呼叫super方法,否則新建例項會報錯 es5的繼承中,實質是先創造子類的例項物件this,然後再將父類的方法 屬性新增到this上面。es6的繼承中,實質是先創造父類的例項物...

ES6類的繼承

es6 引入了關鍵字class來定義乙個類,constructor是構造方法,this代表例項物件。constructor相當於python的init而this則相當於self 類之間通過extends繼承,繼承父類的所有屬性和方法。super關鍵字,它代指父類的this物件,子類必須在constr...