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

javascript prototype的深度探索不是原型繼承那么簡單第3/3頁

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

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

除了上面所說的這些使用技巧之外,prototype因為它獨特的特性,還有其它一些用途,被用作最廣泛和最廣為人知的可能是用它來模擬繼承,關于這一點,留待下一節(jié)中去討論。

3 prototype的實質

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

4 prototype的價值與局限性

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

相關文章

  • js圖片卷簾門導航菜單特效代碼分享

    js圖片卷簾門導航菜單特效代碼分享

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

    JavaScript數(shù)組every方法的應用場景實例

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

    JS中prototype的用法實例分析

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

    詳解如何webpack使用DllPlugin

    這篇文章主要介紹了詳解如何webpack使用DllPlugin,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • JS實現(xiàn)跟隨鼠標閃爍轉動色塊的方法

    JS實現(xiàn)跟隨鼠標閃爍轉動色塊的方法

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

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

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

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

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

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

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

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

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

    JavaScript Reduce使用詳解

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

最新評論