国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

深入理解JavaScript和TypeScript中的class

2024-05-06 15:19:48
字體:
來源:轉載
供稿:網友

前言

對于一個前端開發者來說,很少用到 class ,因為在 JavaScript 中更多的是 函數式 編程,抬手就是一個 function,幾乎不見 class 或 new 的蹤影。所以 設計模式 也是大多數前端開發者的一個短板。

最近在學習 Angular 的過程中發現其大量的運用了 class,不得不佩服,Angular 確實是一個優秀的、值得深入研究的 框架。

本文將簡單的介紹一下 JavaScript 和 TypeScript 中的 class。

基本概念

在介紹 class 之前,要先介紹一些基本的概念。

1、靜態成員

類自身的成員,可以繼承,但實例無法訪問,一般多見于工具類,比如在jQuery時代最常見的 $.ajax ,ajax 便是 $ 的靜態方法,使用方便,不需要再通過 new 或者函數調用的得到一個新實例。

2、私有成員

類內部的成員,一般是不能繼承的,只能在內部使用,實例無法訪問,有一點點像閉包內部的變量,但是還是一定的差別,目前 JavaScript 無法直接定義私有成員,只能通過其它方式輔助實現。

3、getter/setter

存取器屬性,當我們訪問或者修改一個實例的屬性的時候,我們可通過存取器屬性攔截這兩個操作,從而做一些其它的事情,vue正是通過這個api來實現對數據變化的追蹤。

4、實例成員

指 new 出來的實例所具有的成員,可以被繼承,也是通過這個特性實現了代碼的復用。

5、抽象類,抽象方法

抽象類指不可以被實例化的類,通過 new 關鍵字調用會報錯,一般都被設計成父類。

抽象方法,只提供方法的名稱,參數和返回值,不負責實現,具體的實現由子類去完成,如果一個子類繼承于抽象類,那么這個子類必須實現父類所有的抽象方法,否則會報錯。

這兩個概念在 JavaScript 都無法直接實現,但在 TypeScript 或 其它面向對象語言中可以輕松實現,另外這個特性也是用于實現 多態 的重要手段。

案例介紹

為了更好的介紹 class,本文將采用三個 類 來做例子,分別是 Person、Chinese、American。從字面上可以很快的知道: Person 是 父類(基類) ,Chinese 和 American 是 子類(派生類) 。

Person 有 name、age、gender 三個屬性,sayHello 方法和 fullName 存取器屬性。同時 Person 還有一些 靜態成員 和 私有成員 ,由于實在太難想例子了,所以就用 foo、bar、x、y、z 這些來代替吧。

作為子類的 Chinese 和 American 繼承了 Person 的實例成員和靜態成員。同時它們自身也有一些自己的方法和屬性:

Chinese 有 kungfu 屬性,會習武 martial。

American 有 twitter,還可以 sendTwitter。

接下來我們就分別使用 JavaScript 和 TypeScript 來實現這個案例。

JavaScript 中的 class

JavaScript 中的 class 要分開說,在 ES6 中提供了兩個關鍵字 class 和 extends ,雖然它們只是語法糖,底層還是再利用 prototype 實現繼承的,但是不能否認,這中寫法確實讓代碼更清晰,更易讀。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 太湖县| 辽宁省| 昌图县| 门头沟区| 互助| 镇赉县| 垫江县| 永济市| 旅游| 西宁市| 安岳县| 贡山| 高要市| 根河市| 浦城县| 古浪县| 寿阳县| 张北县| 三台县| 清丰县| 于田县| 星座| 临海市| 巫山县| 清镇市| 鹤壁市| 昌宁县| 鹿泉市| 仁布县| 那坡县| 江西省| 邯郸市| 长岛县| 民丰县| 新河县| 广灵县| 千阳县| 紫金县| 肃宁县| 民权县| 六枝特区|