解析ES2015中的物件繼承

2021-09-26 08:54:04 字數 1008 閱讀 4782

從es2015開始,我們可以使用extends關鍵字實現物件繼承,使用super關鍵字指向父物件。比如下面的es2015**:

class

fooshow()

}class

barextends

fooshow()

}var bar =

newbar(1

,'jason');

bar.

show()

;

上面**的輸出結果為:

子類

父類id --- 1

name --- jason

與我們之前文章談到的一樣,es2015對textendssuper的實現,歸根結底還是一種語法糖。那麼在es的環境下,我們應該如何實現物件繼承呢?

var

foo=

function

(id)};

varbar

=function

(id, name);}

;var bar =

newbar(1

,'jason');

bar.

show()

;

var

foo=

function

(id)};

varbar

=function

(id, name);}

;function.prototype.

extends

=function

(base)

;bar.

extends

(foo)

;var bar =

newbar(1

,'jason');

bar.

show()

;

解析ES2015中的靜態方法

es2015引入的靜態方法 static關鍵字 和我之前文章中解析的class和constructor一樣,都只是一種語法糖,本質上,與es5中的函式沒有什麼區別。注意,es2015並沒有對靜態屬性的定義。從es2015開始,我們可以使用static關鍵字定義乙個類的靜態方法 class foo f...

ES2015函式擴充套件 函式引數的預設值

在es6之前,不能直接為函式的引數指定預設值,只能採用變通的方法 function log x,y log hello hello world log hello china hello china log hello hello world這種寫法的缺點在於,如果引數y賦值了,但是對應的布林值為f...

ES2015函式擴充套件 函式引數的預設值

在es6之前,不能直接為函式的引數指定預設值,只能採用變通的方法 function log x,y log hello hello world log hello china hello china log hello hello world 這種寫法的缺點在於,如果引數y賦值了,但是對應的布林值為...