TypeScript徹底解讀(26課時)_7.ES6精講 - 類Class基礎

ES6精講 - 類Class基礎

 

es5中建立構造函數和實例

 

原來在es5中的寫法es6

定義好Point後,在原型對象上定義getPostion的方法瀏覽器

實例自身是沒有這個方法的,咱們調用的時候會去建立他的構造函數上原型上往上尋找函數

輸出的結果學習

調用getPosition方法this

 

 

es6中

有了類的概念用class去定義一個類。es5

constructor是構造函數,this指向建立的實例。每一個類的定義必須有constructor方法,若果你在定義類的時候沒有寫構造函數,它也會默認加上一個空的3d

getPosition方法是建立在Point的原型對象上的對象

多個方法之間能夠用分號隔開,切記不要用逗號blog

 

 

 

也能夠本身去返回一個對象繼承

本身定義了return的返回,那麼建立的實例就不在是你的實例了。這裏咱們使用instanceof來監測一下。返回的是false。咱們建立的結果並非你的類的實例的對象

es6中的類必須使用new 關鍵字去建立

生成的實例上添加屬性或者方法

判斷是不是實例上自身有的屬性,返回的結果是true說明自身就有這個屬性

方法不是自有屬性

getPostion其實是p1繼承來的

 

取值函數,存值函數

es6中加入了set和get關鍵字,來看下他們是怎麼使用的

設置爲19

看完這個例子大概就知道set和get大概是幹嗎的。把一個屬性age拆開成兩個存取值函數。

當咱們去讀取屬性值的時候,就會調用get修飾的方法。

當咱們給這個屬性賦值的時候就會調用set修飾的方法,set修飾的方法有個參數newValue 就是新賦的值

 

 

在es6中類也可使用set和set修飾

訪問屬性值

class表達式

函數有兩種定義形式

class也有兩種形式的定義:

第一種

第二種方式

最後實際的類型是Infos

 

靜態方法

直接定義在類裏面的方法都會被實例繼承,若是不但願實例繼承某個方法,只想這個方法被類自己調用的時候,就須要將方法標記爲靜態方法

使用static關鍵字來標識一個靜態方法

每一個類裏面都有一個name屬性

es5裏面定義一個函數,打印出函數的name

 

只能Point本身調用。這就是靜態方法的定義

實例屬性的其餘寫法

這裏定義的類,要添加到類上的屬性都是經過this來添加

另一種寫法在 constructor的外面,而且給了z的初始值爲0。這裏由於沒有安裝es的loader因此只能在瀏覽器裏面執行

 靜態屬性

es6中只有靜態方法,並無靜態屬性

經過這種形式能夠實現靜態屬性

 

私有方法

目前es6並不提供私有方法私有屬性,須要使用一些技巧來實現

把方法定義在外面

經過實例是沒有辦法拿到func2的

 

第三中方用到es6中新增的基本數據類型symbol,惟一性,獨一無二的

這裏的p是沒有辦法拿到func1方法的

建立a.js

 

若是想調用必須拿到symbol值才能夠調用,這就是經過symbol值定義私有方法

私有屬性

就是屬性前面加#號,處於提案階段,暫時還無法使用

new.target

es6中新增的,通常用於構造函數中,返回new命令做用於的構造函數

new.target就表示構造函數

普通的調用方式

一樣在類中也可使用new.target

定義父類,子類繼承父類

雖然是在父類中使用的new.target.這裏的緣由下節課學習了繼承就清楚了

利用這個特色,咱們就能夠實現,定義一個類,這個類不能直接用來建立實例,只能經過繼承它的子類來實例化

父類就會有異常

相關文章
相關標籤/搜索