一、什么是JavaScript中對象的prototype屬性
JavaScript中對象的prototype屬性,是用來返回對象類型原型的引用的。我們使用prototype屬性提供對象的類的一組基本功能。并且對象的新實例會”繼承”賦予該對象原型的操作。但是這個prototype到底是怎么實現和被管理的呢?
對于對象的prototype屬性的說明,JavaScript手冊上如是說:所有 JavaScript內部對象都有只讀的 prototype 屬性。可以向其原型中動態添加功能(屬性和方法),但該對象不能被賦予不同的原型。然而,用戶定義的對象可以被賦給新的原型。
在JavaScript中,prototype對象是實現面向對象的一個重要機制。每個函數就是一個對象(Function),函數對象都有一個子對象prototype對象,類是以函數的形式來定義的。prototype表示該函數的原型,也表示一個類的成員的集合。在通過new創建一個類的實例對象的時候,prototype對象的成員都成為實例化對象的成員。
1、該對象被類所引用,只有函數對象才可引用;
2、在new實例化后,其成員被實例化,實例對象方可調用。
同時,函數是一個對象,函數對象若直接聲明成員,不用被實例化即可調用。
JavaScript通過一種鏈接機制來支持繼承,而不是通過完全面向對象語言(如Java)所支持的基于類的繼承模型。每個JavaScript對象都有一個內置的屬性,名為prototype。prototype屬性保存著對另一個JavaScript對象的引用,這個對象作為當前對象的父對象。
當通過點記法引用對象的一個函數或屬性時,倘若對象上沒有這個函數或屬性,此時就會使用對象的prototype屬性。當出現這種情況時,將檢查對象prototype屬性所引用的對象,查看是否有所請求的屬性或函數。如果prototype屬性引用的對象也沒有所需的函數或屬性,則會進一步檢查這個對象(prototype屬性引用的對象)的prototype屬性,依次沿著鏈向上查找,直到找到所請求的函數或屬性,或者到達鏈尾,如果已經到達鏈尾還沒有找到,則返回undefined。從這個意義上講,這種繼承結構更應是一種“has a”關系,而不是“is a”關系
神啊,我什么也看懂,怎么辦?看似搞得我很牛,說實話我也看不懂!^_^ ^_^ ^_^
二、prototype屬性應用實例
我們所常見的類包括:數組變量(Array)、邏輯變量(Boolean)、日期變量(Date)、結構變量(Function)、數值變量(Number)、對象變量(Object)、字符串變量(String) 等,而相關的類的方法,也是程序員經常用到的(在這里要區分一下類的注意和屬性發方法),例如數組的push方法、日期的get系列方法、字符串的split方法等等,
但是在實際的編程過程中不知道有沒有感覺到現有方法的不足?prototype 方法應運而生!下面,將通過實例由淺入深講解 prototype 的具體使用方法:
新聞熱點
疑難解答
圖片精選