亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

javascript prototype的深度探索不是原型繼承那么簡(jiǎn)單

 更新時(shí)間:2008年06月02日 19:16:04   作者:  
JavaScript中對(duì)象的prototype屬性,可以返回對(duì)象類型原型的引用。這是一個(gè)相當(dāng)拗口的解釋,要理解它,先要正確理解對(duì)象類型(Type)以及原型(prototype)的概念。

注意,以上的例子說(shuō)明了用prototype可以快速創(chuàng)建對(duì)象的多個(gè)副本,一般情況下,利用prototype來(lái)大量的創(chuàng)建復(fù)雜對(duì)象,要比用其他任何方法來(lái)copy對(duì)象快得多。注意到,用一個(gè)對(duì)象為原型,來(lái)創(chuàng)建大量的新對(duì)象,這正是prototype pattern的本質(zhì)。
下面是一個(gè)例子:

除了上面所說(shuō)的這些使用技巧之外,prototype因?yàn)樗?dú)特的特性,還有其它一些用途,被用作最廣泛和最廣為人知的可能是用它來(lái)模擬繼承,關(guān)于這一點(diǎn),留待下一節(jié)中去討論。

3 prototype的實(shí)質(zhì)

        上面已經(jīng)說(shuō)了prototype的作用,現(xiàn)在我們來(lái)透過(guò)規(guī)律揭示prototype的實(shí)質(zhì)。
        我們說(shuō),prototype的行為類似于C++中的靜態(tài)域,將一個(gè)屬性添加為prototype的屬性,這個(gè)屬性將被該類型創(chuàng)建的所有實(shí)例所共享,但是這種共享是只讀的。在任何一個(gè)實(shí)例中只能夠用自己的同名屬性覆蓋這個(gè)屬性,而不能夠改變它。換句話說(shuō),對(duì)象在讀取某個(gè)屬性時(shí),總是先檢查自身域的屬性表,如果有這個(gè)屬性,則會(huì)返回這個(gè)屬性,否則就去讀取prototype域,返回protoype域上的屬性。另外,JavaScript允許protoype域引用任何類型的對(duì)象,因此,如果對(duì)protoype域的讀取依然沒(méi)有找到這個(gè)屬性,則JavaScript將遞歸地查找prototype域所指向?qū)ο蟮膒rototype域,直到這個(gè)對(duì)象的prototype域?yàn)樗旧砘蛘叱霈F(xiàn)循環(huán)為止,我們可以用下面的圖來(lái)描述prototype與對(duì)象實(shí)例之間的關(guān)系:
        //TODO:

4 prototype的價(jià)值與局限性

        從上面的分析我們理解了prototype,通過(guò)它能夠以一個(gè)對(duì)象為原型,安全地創(chuàng)建大量的實(shí)例,這就是prototype的真正含義,也是它的價(jià)值所在。后面我們會(huì)看到,利用prototype的這個(gè)特性,可以用來(lái)模擬對(duì)象的繼承,但是要知道,prototype用來(lái)模擬繼承盡管也是它的一個(gè)重要價(jià)值,但是絕對(duì)不是它的核心,換句話說(shuō),JavaScript之所以支持prototype,絕對(duì)不是僅僅用來(lái)實(shí)現(xiàn)它的對(duì)象繼承,即使沒(méi)有了prototype繼承,JavaScript的prototype機(jī)制依然是非常有用的。
        由于prototype僅僅是以對(duì)象為原型給類型構(gòu)建副本,因此它也具有很大的局限性。首先,它在類型的prototype域上并不是表現(xiàn)為一種值拷貝,而是一種引用拷貝,這帶來(lái)了“副作用”。改變某個(gè)原型上引用類型的屬性的屬性值(又是一個(gè)相當(dāng)拗口的解釋:P),將會(huì)徹底影響到這個(gè)類型創(chuàng)建的每一個(gè)實(shí)例。有的時(shí)候這正是我們需要的(比如某一類所有對(duì)象的改變默認(rèn)值),但有的時(shí)候這也是我們所不希望的(比如在類繼承的時(shí)候),下面給出了一個(gè)例子:

相關(guān)文章

  • js圖片卷簾門導(dǎo)航菜單特效代碼分享

    js圖片卷簾門導(dǎo)航菜單特效代碼分享

    這篇文章主要介紹了js圖片卷簾門導(dǎo)航菜單特效,一款很新穎的圖片導(dǎo)航菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-09-09
  • JavaScript數(shù)組every方法的應(yīng)用場(chǎng)景實(shí)例

    JavaScript數(shù)組every方法的應(yīng)用場(chǎng)景實(shí)例

    every方法確定數(shù)組中的每一項(xiàng)的結(jié)果都滿足所寫(xiě)的條件的時(shí)候,就會(huì)返回true,否則返回false,這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組every方法應(yīng)用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • JS中prototype的用法實(shí)例分析

    JS中prototype的用法實(shí)例分析

    這篇文章主要介紹了JS中prototype的用法,實(shí)例分析了JS中prototype的常見(jiàn)使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-03-03
  • 詳解如何webpack使用DllPlugin

    詳解如何webpack使用DllPlugin

    這篇文章主要介紹了詳解如何webpack使用DllPlugin,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • JS實(shí)現(xiàn)跟隨鼠標(biāo)閃爍轉(zhuǎn)動(dòng)色塊的方法

    JS實(shí)現(xiàn)跟隨鼠標(biāo)閃爍轉(zhuǎn)動(dòng)色塊的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)跟隨鼠標(biāo)閃爍轉(zhuǎn)動(dòng)色塊的方法,涉及javascript操作html元素及css樣式的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 旺旺在線客服代碼 旺旺客服代碼生成器

    旺旺在線客服代碼 旺旺客服代碼生成器

    很多朋友想在網(wǎng)站上插入自己的阿里旺旺在線聯(lián)系圖片,就像是和QQ一樣,小編為大家詳細(xì)講解了旺旺在線客服代碼以及旺旺客服代碼生成器,希望能夠幫助到大家。
    2018-01-01
  • JavaScript?文件優(yōu)化全面指南

    JavaScript?文件優(yōu)化全面指南

    本文將探討實(shí)用的?JavaScript?文件優(yōu)化技術(shù)、如何處理與?JavaScript?文件相關(guān)的性能問(wèn)題以及幫助優(yōu)化過(guò)程的工具,你將獲得提升web應(yīng)用程序速度的相關(guān)知識(shí),從而為你的用戶提供無(wú)縫體驗(yàn)
    2023-12-12
  • 如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)

    如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)

    從IE 10開(kāi)始,type=”text” 的 input 在用戶輸入內(nèi)容后,會(huì)自動(dòng)產(chǎn)生一個(gè)小叉叉(X),方便用戶點(diǎn)擊清除已經(jīng)輸入的文本,下面通過(guò)本文給大家介紹下如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)
    2016-12-12
  • Js可拖拽放大的層拖動(dòng)特效實(shí)現(xiàn)方法

    Js可拖拽放大的層拖動(dòng)特效實(shí)現(xiàn)方法

    這篇文章主要介紹了Js可拖拽放大的層拖動(dòng)特效實(shí)現(xiàn)方法,涉及javascript操作DOM元素及css樣式的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • JavaScript Reduce使用詳解

    JavaScript Reduce使用詳解

    這篇文章主要介紹了JavaScript Reduce使用的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用JavaScript,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論