欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

老生常談 關(guān)于JavaScript的類的繼承

 更新時(shí)間:2016年06月24日 09:20:24   投稿:jingxian  
下面小編就為大家?guī)硪黄仙U?關(guān)于JavaScript的類的繼承。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

其實(shí)最一開始學(xué)JS的時(shí)候就看過繼承的實(shí)現(xiàn)。當(dāng)時(shí)只是去試著理解從書上看來的代碼段而已。今天又重新思考了一下,感覺這是一個(gè)思維探索演進(jìn)的結(jié)果。

繼承,即復(fù)用。

如果拋開繼承的固有思想,讓b復(fù)用a的成員,最簡(jiǎn)單粗暴的做法, b=a;

那么,問題來了: 對(duì)b的任何改動(dòng),就是對(duì)a的改動(dòng)(同一個(gè)object嘛)。

好吧,那就拷貝一份,淺拷貝不夠安全的話,就用深拷貝。

問題:代碼是復(fù)用了,但內(nèi)存浪費(fèi)了(不管是變量還是方法,在JS中都是對(duì)象)。

不拷貝,只讀不寫,就可以用JS的原型,b.__proto__ = a。一般我們不直接更改__proto__,太暴力了,JS中提供了一個(gè)method可以比較“溫和”地達(dá)到目的——Object.create(b)。

www.dbjr.com.cn

這個(gè)方法可行,但這只是具體對(duì)象的復(fù)用模式,如果做到“利用ConstructorB創(chuàng)建的對(duì)象能復(fù)用ConstructorA的對(duì)象的原型”呢?

答案是:將b看成是ConstructorB.prototype,將a看成ConstructorA.prototype.

www.dbjr.com.cn

問題:

www.dbjr.com.cn

解決方法:

申明ConstructorB的時(shí)候,系統(tǒng)自動(dòng)會(huì)讓ConstructorB.prototype.constructor=ConstructorB; 在上面代碼中為了復(fù)用ConstructorA.prototype, 丟掉了constructor, 補(bǔ)上即可。

www.dbjr.com.cn

以上是最基本的繼承,關(guān)于子類如何更通用地調(diào)用父類的構(gòu)造函數(shù)及成員(如this._super),如何更通用地實(shí)現(xiàn)繼承模式(如A=inheritFrom(B)),等等,不在本文范圍^O^

以上就是小編為大家?guī)淼睦仙U?關(guān)于JavaScript的類的繼承全部?jī)?nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評(píng)論