javascript prototype的深度探索不是原型繼承那么簡(jiǎn)單第2/3頁
更新時(shí)間:2008年06月02日 19:16:04 作者:
JavaScript中對(duì)象的prototype屬性,可以返回對(duì)象類型原型的引用。這是一個(gè)相當(dāng)拗口的解釋,要理解它,先要正確理解對(duì)象類型(Type)以及原型(prototype)的概念。
上面的例子通過prototype為Point對(duì)象設(shè)定了默認(rèn)值(0,0),因此p1的值為(0,0),p2的值為(1,2),通過delete p2.x, delete p2.y; 可以將p2的值恢復(fù)為(0,0)。下面是一個(gè)更有意思的例子:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
利用prototype還可以為對(duì)象的屬性設(shè)置一個(gè)只讀的getter,從而避免它被改寫。下面是一個(gè)例子:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
將this.getFirstPoint()改寫為下面這個(gè)樣子:
this.getFirstPoint = function()
{
function GETTER(){};
GETTER.prototype = m_firstPoint;
return new GETTER();
}
則可以避免這個(gè)問題,保證了m_firstPoint屬性的只讀性。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
實(shí)際上,將一個(gè)對(duì)象設(shè)置為一個(gè)類型的原型,相當(dāng)于通過實(shí)例化這個(gè)類型,為對(duì)象建立只讀副本,在任何時(shí)候?qū)Ω北具M(jìn)行改變,都不會(huì)影響到原始對(duì)象,而對(duì)原始對(duì)象進(jìn)行改變,則會(huì)影響到副本,除非被改變的屬性已經(jīng)被副本自己的同名屬性覆蓋。用delete操作將對(duì)象自己的同名屬性刪除,則可以恢復(fù)原型屬性的可見性。下面再舉一個(gè)例子:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
您可能感興趣的文章:
- Javascript中 關(guān)于prototype屬性實(shí)現(xiàn)繼承的原理圖
- JavaScript類和繼承 prototype屬性
- js中繼承的幾種用法總結(jié)(apply,call,prototype)
- 深入了解javascript中的prototype與繼承
- JavaScript面向?qū)ο笾甈rototypes和繼承
- Javascript 原型和繼承(Prototypes and Inheritance)
- JavaScript不使用prototype和new實(shí)現(xiàn)繼承機(jī)制
- JavaScript使用prototype原型實(shí)現(xiàn)的封裝繼承多態(tài)示例
- javascript基于prototype實(shí)現(xiàn)類似OOP繼承的方法
- Javascript中的prototype與繼承
- JS偽繼承prototype實(shí)現(xiàn)方法示例
- JavaScript使用prototype屬性實(shí)現(xiàn)繼承操作示例
相關(guān)文章
JavaScript數(shù)組every方法的應(yīng)用場(chǎng)景實(shí)例
every方法確定數(shù)組中的每一項(xiàng)的結(jié)果都滿足所寫的條件的時(shí)候,就會(huì)返回true,否則返回false,這篇文章主要給大家介紹了關(guān)于JavaScript數(shù)組every方法應(yīng)用場(chǎng)景的相關(guān)資料,需要的朋友可以參考下2022-12-12JS實(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如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)
從IE 10開始,type=”text” 的 input 在用戶輸入內(nèi)容后,會(huì)自動(dòng)產(chǎn)生一個(gè)小叉叉(X),方便用戶點(diǎn)擊清除已經(jīng)輸入的文本,下面通過本文給大家介紹下如何清除IE10+ input X 文本框的叉叉和密碼輸入框的眼睛圖標(biāo)2016-12-12Js可拖拽放大的層拖動(dòng)特效實(shí)現(xiàn)方法
這篇文章主要介紹了Js可拖拽放大的層拖動(dòng)特效實(shí)現(xiàn)方法,涉及javascript操作DOM元素及css樣式的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-02-02