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

首頁 > 語言 > JavaScript > 正文

JS繼承與閉包及JS實現繼承的三種方式

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

前  言

在之前的兩篇博客中,我們詳細探討了JavaScript OOP中的各種知識點(JS OOP基礎與JS 中This指向詳解 、 成員屬性、靜態屬性、原型屬性與JS原型鏈)。今天我們來繼續探討剩余的內容吧。

我們都知道,面向對象的三大特征——封裝、繼承、多態。 封裝無非就是屬性和方法的私有化,所以我們JS中提供了私有屬性和私有方法。 而JS中并沒有多態,因此我們說JS是一門基于對象的語言,而非面向對象的語言。 那么,面向對象三大特征中,在JS中最重要的就是繼承了。

一、繼承的基本概念

使用一個子類繼承另一個父類,子類可以自動擁有父類的屬性和方法。

>>>繼承的兩方,發生在兩個類之間。

所以,所謂的繼承,無非就是讓子類,擁有父類的所有屬性和方法。那么,在JS中,我們要模擬實現這一步,有三種常用的方法可以實現。

分別是:擴展Object的prototype實現繼承、使用call和apply實現繼承、使用原型實現繼承。

二、擴展Object的prototype實現繼承

擴展Object實現繼承的本質,是我們自己寫了一個方法,將父類的所有屬性和方法通過遍歷循環,逐個復制給子類。

詳細步驟如下:

1:定義父類

functionParent(){}

2:定義子類

funtion Son(){}

3:通過原型給Object對象添加一個擴展方法。

Object.prototype.customExtend =function(parObj){for(variinparObj){//通過for-in循環,把父類的所有屬性方法,賦值給自己this[i] =parObj[i];}}

4:子類對象調用擴展方法

Son.customExtend(Parent);

三、使用call和apply實現繼承

首先,要使用這種方式顯示繼承,我們再來回顧一下call和apply兩個函數的作用:

call和apply:通過函數名調用方法,強行將函數中的this指向某個對象;

call寫法:func.call(func的this指向的obj,參數1,參數2...);

apply寫法:func.apply(func的this指向的obj,[參數1,參數2...]);

那么,我們使用這兩個函數實現繼承的思路就是:在子類中,使用父類函數調用call或apply,并將父類的this,強行綁定為子類的this。 那這樣,父類綁定在this上的屬性和方法,不就順利成章的綁定到子類的this上了嗎?

詳細步驟如下:

1:定義父類

funtion Parent(){}

2:定義子類

functionSon(){}

3:在子類中通過call方法或者apply方法去調用父類。

functionSon(){Parent.call(this,....);//將父類函數中的this,強行綁定為子類的this}

四、使用原型實現繼承

使用原型實現繼承,是比較簡單而且比較好理解的一種,就是將子類的prototype指向父類的對象就可以啦。

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

圖片精選

主站蜘蛛池模板: 天津市| 海盐县| 仁寿县| 邯郸市| 吴桥县| 木里| 西乌珠穆沁旗| 新密市| 青神县| 卢湾区| 义乌市| 四平市| 呼伦贝尔市| 潮州市| 石门县| 万年县| 海原县| 三门峡市| 寿光市| 江门市| 延川县| 铜鼓县| 纳雍县| 屏东市| 安义县| 峨眉山市| 长武县| 行唐县| 渭南市| 沁阳市| 上高县| 收藏| 上杭县| 常德市| 宜城市| 察雅县| 当雄县| 简阳市| 米易县| 广饶县| 东源县|