JavaScript中子對(duì)象訪問(wèn)父對(duì)象的方式詳解
在傳統(tǒng)面向?qū)ο蟮木幊陶Z(yǔ)言里,都會(huì)提供一種子類訪問(wèn)父類的特殊語(yǔ)法,引文我們?cè)趯?shí)現(xiàn)子類方法往往需要父類方法的額外輔助。在這種情況下,子類通常會(huì)調(diào)用父類中的同名方法,最終以便完成工作。
javascript雖然沒(méi)有類似上述的特殊語(yǔ)法,但我們可以造一個(gè)??!
function her(){}; her.prototype.name = 'Anna'; her.prototype.toString = function(){ var const = this.constructor; return const.uber ? this.const.uber.toString() + ',' + this.name : this.name; } function his(){}; var F = function(){}; F.prototype = her.prototype; his.prototype = new F(); his.prototype.constructor = her; his.uber = her.prototype; his.prototype.name ='Jock'; function child(width, height){ this.width = width; this.height = height; } var F = function(){}; F.prototype = his.prototype; child.prototype = new F(); child.prototype.constructor = child; child.uber = his.prototype; child.prototype.name = 'Los'; child.prototype.getArea = function(){ return this.width * this.height; }
我們?cè)跇?gòu)建關(guān)系的過(guò)程中,我們引入了一個(gè)uber屬性,并令其指向父及對(duì)象。
在這里,我們更新了以下內(nèi)容:
1. 將usber屬性設(shè)置成指向父對(duì)象的引用;
2. 對(duì)toString()方法進(jìn)行了更新;
之前的toString()方法只是簡(jiǎn)單的返回this.name,現(xiàn)在我們給他添加了額外的任務(wù),就是檢查this.constructor.usber屬性,如果存在就調(diào)用該屬性的toString()方法。
由于this.constructor本身是一個(gè)函數(shù),而this.constructo.usber是指向當(dāng)前對(duì)象父級(jí)原型的引用,所以我們調(diào)用child實(shí)體的toString()方法時(shí),其原型鏈上的toString()方法都會(huì)被調(diào)用。
var my = child(1,2); my.toString() // Anna, Jock, Los
以上所述是小編給大家介紹的JavaScript中子對(duì)象訪問(wèn)父對(duì)象的方式詳解,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- 在JavaScript中如何訪問(wèn)暫未存在的嵌套對(duì)象
- 詳解js訪問(wèn)對(duì)象的屬性和方法
- JS實(shí)現(xiàn)訪問(wèn)DOM對(duì)象指定節(jié)點(diǎn)的方法示例
- js return返回多個(gè)值,通過(guò)對(duì)象的屬性訪問(wèn)方法
- js中通過(guò)getElementsByName訪問(wèn)name集合對(duì)象的方法
- 淺析JavaScript訪問(wèn)對(duì)象屬性和方法及區(qū)別
- js 利用image對(duì)象實(shí)現(xiàn)圖片的預(yù)加載提高訪問(wèn)速度
- JS訪問(wèn)對(duì)象兩種方式區(qū)別解析
相關(guān)文章
javascript設(shè)計(jì)模式 – 橋接模式原理與應(yīng)用實(shí)例分析
這篇文章主要介紹了javascript設(shè)計(jì)模式 – 橋接模式,結(jié)合實(shí)例形式分析了javascript橋接模式基本概念、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-04-04微信實(shí)現(xiàn)自動(dòng)跳轉(zhuǎn)到用其他瀏覽器打開(kāi)指定APP下載
這篇文章主要介紹了微信實(shí)現(xiàn)自動(dòng)跳轉(zhuǎn)到用其他瀏覽器打開(kāi)指定APP下載,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02JavaScript的Object.defineProperty詳解
本篇文章給大家詳細(xì)講述了JavaScript的Object.defineProperty的相關(guān)知識(shí)點(diǎn)內(nèi)容,有興趣的朋友參考學(xué)習(xí)下。2018-07-07JavaScript鼠標(biāo)事件,點(diǎn)擊鼠標(biāo)右鍵,彈出div的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇JavaScript鼠標(biāo)事件,點(diǎn)擊鼠標(biāo)右鍵,彈出div的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08JS簡(jiǎn)單實(shí)現(xiàn)父子窗口傳值功能示例【未使用iframe框架】
這篇文章主要介紹了JS簡(jiǎn)單實(shí)現(xiàn)父子窗口傳值功能,結(jié)合具體實(shí)例形式分析了javascript實(shí)現(xiàn)不使用iframe框架進(jìn)行窗口之間簡(jiǎn)單傳值的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09JS平滑無(wú)縫滾動(dòng)效果的實(shí)現(xiàn)代碼
下面小編就為大家?guī)?lái)一篇JS平滑無(wú)縫滾動(dòng)效果的實(shí)現(xiàn)代碼。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考2016-05-05js控制網(wǎng)頁(yè)背景音樂(lè)播放與停止的方法
這篇文章主要介紹了js控制網(wǎng)頁(yè)背景音樂(lè)播放與停止的方法,實(shí)例分析了javascript控制背景音樂(lè)的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02js中字符串編碼函數(shù)escape()、encodeURI()、encodeURIComponent()區(qū)別詳解
JavaScript中有三個(gè)可以對(duì)字符串編碼的函數(shù),分別是: escape,encodeURI,encodeURIComponent,相應(yīng)3個(gè)解碼函數(shù):unescape,decodeURI,decodeURIComponent 。接下來(lái)通過(guò)本文給大家介紹三者之家的區(qū)別,感興趣的朋友一起學(xué)習(xí)吧2016-04-04