最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

對(duì)象繼承的方式

2023-09-05 15:13 作者:bengdour  | 我要投稿

這篇是上一篇的姐妹篇,面試中你有被問(wèn)到-javascript中有幾種創(chuàng)建對(duì)象的方式嗎?這兩篇結(jié)合起來(lái),能更好地理解對(duì)象。開(kāi)始吧!



01

原型鏈


原理:將父類的實(shí)例賦給子類的prototype

缺點(diǎn):

實(shí)例的類型是不能直觀看到的;

在創(chuàng)建子類型時(shí),雖然可以傳參,但容易造成修改的混亂。



02

構(gòu)造函數(shù)結(jié)合原型鏈


原理:

使用call繼承構(gòu)造函數(shù)的屬性和方法;

將父類的實(shí)例賦給子類的prototype繼承父類的屬性和方法,以及構(gòu)造函數(shù)原型的方法

缺點(diǎn):

由于調(diào)用了兩次父類的構(gòu)造函數(shù),所以子類的原型中多了很多多余的屬性



03

原型式繼承



Object.getPrototypeOf()方法可以用來(lái)從子類上獲取父類,判斷一個(gè)類是否繼承了另一個(gè)類

Object.setPrototypeOf(),為現(xiàn)有對(duì)象設(shè)置原型,返回一個(gè)新對(duì)象:?

接收兩個(gè)參數(shù):第一個(gè)是現(xiàn)有對(duì)象,第二是原型對(duì)象。


缺點(diǎn):

不能傳參,即使傳參也會(huì)被忽略



04

寄生式繼承


原理:利用Object.create()將父類復(fù)制給子類,子類再進(jìn)行拓展

缺點(diǎn):

使用不方便



05

寄生式組合繼承


原理:

利用call()獲取父類的屬性和方法,并將指針指向子類

利用Object.defineProperty獲取Person.prototype中的屬性和方法

Object.defineProperty方法直接在一個(gè)對(duì)象上定義一個(gè)新屬性,或者修改一個(gè)已經(jīng)存在的屬性, 并返回這個(gè)對(duì)象。?

Object.defineProperty 需要三個(gè)參數(shù)(object , propName , descriptor)

?1 object 對(duì)象 => 給誰(shuí)加

?2 propName 屬性名 => 要加的屬性的名字 【類型:String】

?3 descriptor 屬性描述 => 加的這個(gè)屬性有什么樣的特性【類型:Object】


06

????extends關(guān)鍵字實(shí)現(xiàn)繼承

super作為函數(shù)調(diào)用時(shí),代表父類的構(gòu)造函數(shù)--ES6要求,子類的構(gòu)造函數(shù)必須執(zhí)行一次super函數(shù),否則會(huì)報(bào)錯(cuò);

super雖然代表了父類Person的構(gòu)造函數(shù),但返回的是子類Coder的實(shí)例,即super內(nèi)部的this指向的是Coder的實(shí)例。因此super()在這里相當(dāng)于Person.prototype.contructor.call(this)






對(duì)象繼承的方式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
米泉市| 曲松县| 云龙县| 永康市| 宜丰县| 长寿区| 湘西| 台湾省| 浮梁县| 西藏| 砀山县| 清新县| 永宁县| 福海县| 永川市| 广德县| 疏勒县| 临安市| 明星| 凌源市| 保亭| 额敏县| 吐鲁番市| 沅江市| 舟山市| 大兴区| 汽车| 北辰区| 邵东县| 剑阁县| 赞皇县| 刚察县| 阳谷县| 贵南县| 永德县| 铜川市| 锦屏县| 仁布县| 吉木萨尔县| 汉沽区| 平和县|