国产乱婬AV国草莓Av,久久久久夜色精品国产明星,亚洲 欧洲 另类 综合 自拍,欧美一区二区三区爱爱精品视频

java描述語言繼承的幾種實(shí)現(xiàn)方式,通過java描述語言面向?qū)ο罄^承來實(shí)現(xiàn)。

所以說盡管call和apply并不是僅僅為了繼承而新增的方法,但用它們可以模擬繼承。對象冒充繼承就是這么一回事,它可以實(shí)現(xiàn)多重繼承,只要重復(fù)做這一套賦值的流程就可以了。現(xiàn)在回到Js利用對象冒充模擬的繼承里,所有的成員方法都是針對this而創(chuàng)建的,也就是所所有的實(shí)例都會擁有一份成員方法的副本,這是對內(nèi)存資源的一種極度浪費(fèi)。

  • 網(wǎng)站首頁
  • 服務(wù)范圍
  • 新聞動態(tài)
  • 關(guān)于我們
  • 聯(lián)系我們
  • java描述語言繼承的幾種實(shí)現(xiàn)方式,通過java描述語言面向?qū)ο罄^承來實(shí)現(xiàn)。

    2022-04-21

    javascript面向?qū)ο笾欣^承實(shí)現(xiàn)的幾種方式
    < p>1。原型鏈繼承核心將父類的實(shí)例作為子類的原型缺點(diǎn)。父類增加了原型方法/原型屬性,可以被子類訪問。2.構(gòu)造繼承核心使用父類的構(gòu)造函數(shù)來增強(qiáng)子類的實(shí)例,相當(dāng)于將父類的實(shí)例屬性復(fù)制到子類中(不使用原型)。缺點(diǎn)方法在構(gòu)造函數(shù)中定義,只能繼承父類的實(shí)例屬性和方法,不能繼承原型屬性/方法。無法實(shí)現(xiàn)函數(shù)重用,每個子類都有父類實(shí)例函數(shù)的副本,影響性能。3.組合繼承組合繼承(所有實(shí)例都可以有自己的屬性,使用相同的方法。組合繼承避免了原型鏈和借用構(gòu)造函數(shù)的缺陷,結(jié)合了兩者的優(yōu)點(diǎn),是最常用的繼承方法。)核心通過調(diào)用父類來構(gòu)造,繼承了父類的屬性,保留了傳遞參數(shù)的優(yōu)點(diǎn)。然后,使用父類實(shí)例作為子類原型,實(shí)現(xiàn)功能重用缺點(diǎn)。父類的構(gòu)造函數(shù)被調(diào)用兩次,生成了兩個實(shí)例(子類實(shí)例屏蔽了子類原型上的實(shí)例)。4.寄生組合繼承核心通過寄生的方式砍掉父類的實(shí)例屬性。這樣,當(dāng)父類被調(diào)用兩次時,實(shí)例方法/屬性就不會被初始化兩次。避免組合繼承的缺點(diǎn)是比較完美,但是實(shí)現(xiàn)起來比較復(fù)雜,這兩種方法各有優(yōu)缺點(diǎn)。在這里,我先給大家列舉一下,再從底層分析區(qū)別。(1)該對象假裝是(name){ this . name = name

    < p > this。= () {(this.name+"!")

    }

    }B(name,Id){ this . temp = A

    < p > this . temp(name)

    < p >//它相當(dāng)于newa()

    < p > this . temp

    < p >//防止超類A的屬性和方法this.id將來被temp引用覆蓋。}

    }構(gòu)造對象B時,調(diào)用temp相當(dāng)于啟動A的構(gòu)造函數(shù),注意這里上下文中的這個對象是B的一個實(shí)例,所以在執(zhí)行A的構(gòu)造函數(shù)腳本時,A的所有變量和方法都會賦給這個所指向的對象,也就是B的實(shí)例,從而達(dá)到B繼承A的屬性方法的目的,刪除臨時引用temp后, 是為了防止維護(hù)B中A的類對象(注意不是實(shí)例對象)的引用改變,因?yàn)楦淖僼emp會直接導(dǎo)致A類的結(jié)構(gòu)改變(注意不是A類的對象)。

    我們可以看到,在Js版本更新的過程中,添加了call和apply函數(shù),以便更方便地切換這個上下文來實(shí)現(xiàn)繼承或更通用的目的。它們的原理是一樣的,只是參數(shù)的版本不同(一個變量是任意參數(shù),而一個參數(shù)集必須傳入數(shù)組)。這里以call為例說明call實(shí)現(xiàn)的對象假裝被繼承。Rect(width),{this.width=width

    this。=

    < p > this . area =(){ this . width * this。

    }

    }(width,name){Rect.call(this,width,)

    < p > this . name = name

    < p > this . show =(){ alert(this . name+" With area "+this . area())

    < p > }關(guān)于調(diào)用方法,官方的解釋是調(diào)用一個對象的方法來使用另一個調(diào)用(,arg1,arg2…),這也是對象模擬的繼承。實(shí)際上,調(diào)用call方法時發(fā)生的也是上下文環(huán)境變量this的替換。在函數(shù)體中,這必須指向類對象的實(shí)例。但是,使用它作為上下文環(huán)境變量會調(diào)用Rect方法,即Rect類的構(gòu)造函數(shù)。所以當(dāng)Rect被調(diào)用時,它的賦值屬性和方法實(shí)際上是在一個新的對象上執(zhí)行的。因此,盡管call和apply不僅僅是繼承的新方法,它們也可以模擬繼承。對象模仿繼承就是這樣的東西,它可以實(shí)現(xiàn)多重繼承,只需要重復(fù)賦值的過程。然而目前并沒有大規(guī)模使用。為什么?< br >因?yàn)樗幸粋€明顯的性能缺陷,所以有必要談?wù)凮O的概念。我們說對象是成員+成員方法的集合。構(gòu)造對象實(shí)例時,這些實(shí)例只需要有自己的成員變量。成員方法只是一個對變量進(jìn)行操作的可執(zhí)行文本區(qū)域。這個區(qū)域不需要復(fù)制

    客服微信
    Phone: 18560018089
    Emali: tx1860@qq.com
    Address: 山東省濟(jì)南市高新區(qū)中舜泰廣場9號樓南樓1009