JavaScript中子對象訪問父對象的方式詳解
在傳統(tǒng)面向?qū)ο蟮木幊陶Z言里,都會提供一種子類訪問父類的特殊語法,引文我們在實現(xiàn)子類方法往往需要父類方法的額外輔助。在這種情況下,子類通常會調(diào)用父類中的同名方法,最終以便完成工作。
javascript雖然沒有類似上述的特殊語法,但我們可以造一個??!
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; }
我們在構(gòu)建關(guān)系的過程中,我們引入了一個uber屬性,并令其指向父及對象。
在這里,我們更新了以下內(nèi)容:
1. 將usber屬性設(shè)置成指向父對象的引用;
2. 對toString()方法進行了更新;
之前的toString()方法只是簡單的返回this.name,現(xiàn)在我們給他添加了額外的任務(wù),就是檢查this.constructor.usber屬性,如果存在就調(diào)用該屬性的toString()方法。
由于this.constructor本身是一個函數(shù),而this.constructo.usber是指向當前對象父級原型的引用,所以我們調(diào)用child實體的toString()方法時,其原型鏈上的toString()方法都會被調(diào)用。
var my = child(1,2); my.toString() // Anna, Jock, Los
以上所述是小編給大家介紹的JavaScript中子對象訪問父對象的方式詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
javascript設(shè)計模式 – 橋接模式原理與應(yīng)用實例分析
這篇文章主要介紹了javascript設(shè)計模式 – 橋接模式,結(jié)合實例形式分析了javascript橋接模式基本概念、原理、用法及操作注意事項,需要的朋友可以參考下2020-04-04微信實現(xiàn)自動跳轉(zhuǎn)到用其他瀏覽器打開指定APP下載
這篇文章主要介紹了微信實現(xiàn)自動跳轉(zhuǎn)到用其他瀏覽器打開指定APP下載,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-02-02JavaScript的Object.defineProperty詳解
本篇文章給大家詳細講述了JavaScript的Object.defineProperty的相關(guān)知識點內(nèi)容,有興趣的朋友參考學習下。2018-07-07JavaScript鼠標事件,點擊鼠標右鍵,彈出div的簡單實例
下面小編就為大家?guī)硪黄狫avaScript鼠標事件,點擊鼠標右鍵,彈出div的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08JS簡單實現(xiàn)父子窗口傳值功能示例【未使用iframe框架】
這篇文章主要介紹了JS簡單實現(xiàn)父子窗口傳值功能,結(jié)合具體實例形式分析了javascript實現(xiàn)不使用iframe框架進行窗口之間簡單傳值的相關(guān)操作技巧,需要的朋友可以參考下2017-09-09js中字符串編碼函數(shù)escape()、encodeURI()、encodeURIComponent()區(qū)別詳解
JavaScript中有三個可以對字符串編碼的函數(shù),分別是: escape,encodeURI,encodeURIComponent,相應(yīng)3個解碼函數(shù):unescape,decodeURI,decodeURIComponent 。接下來通過本文給大家介紹三者之家的區(qū)別,感興趣的朋友一起學習吧2016-04-04