javascript prototype的深度探索不是原型繼承那么簡單第2/3頁
更新時間:2008年06月02日 19:16:04 作者:
JavaScript中對象的prototype屬性,可以返回對象類型原型的引用。這是一個相當(dāng)拗口的解釋,要理解它,先要正確理解對象類型(Type)以及原型(prototype)的概念。
上面的例子通過prototype為Point對象設(shè)定了默認(rèn)值(0,0),因此p1的值為(0,0),p2的值為(1,2),通過delete p2.x, delete p2.y; 可以將p2的值恢復(fù)為(0,0)。下面是一個更有意思的例子:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
利用prototype還可以為對象的屬性設(shè)置一個只讀的getter,從而避免它被改寫。下面是一個例子:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
將this.getFirstPoint()改寫為下面這個樣子:
this.getFirstPoint = function()
{
function GETTER(){};
GETTER.prototype = m_firstPoint;
return new GETTER();
}
則可以避免這個問題,保證了m_firstPoint屬性的只讀性。
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
實際上,將一個對象設(shè)置為一個類型的原型,相當(dāng)于通過實例化這個類型,為對象建立只讀副本,在任何時候?qū)Ω北具M(jìn)行改變,都不會影響到原始對象,而對原始對象進(jìn)行改變,則會影響到副本,除非被改變的屬性已經(jīng)被副本自己的同名屬性覆蓋。用delete操作將對象自己的同名屬性刪除,則可以恢復(fù)原型屬性的可見性。下面再舉一個例子:
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
您可能感興趣的文章:
- Javascript中 關(guān)于prototype屬性實現(xiàn)繼承的原理圖
- JavaScript類和繼承 prototype屬性
- js中繼承的幾種用法總結(jié)(apply,call,prototype)
- 深入了解javascript中的prototype與繼承
- JavaScript面向?qū)ο笾甈rototypes和繼承
- Javascript 原型和繼承(Prototypes and Inheritance)
- JavaScript不使用prototype和new實現(xiàn)繼承機(jī)制
- JavaScript使用prototype原型實現(xiàn)的封裝繼承多態(tài)示例
- javascript基于prototype實現(xiàn)類似OOP繼承的方法
- Javascript中的prototype與繼承
- JS偽繼承prototype實現(xiàn)方法示例
- JavaScript使用prototype屬性實現(xiàn)繼承操作示例
相關(guān)文章
ES6解構(gòu)賦值(數(shù)組,對象,函數(shù))使用詳解
這篇文章主要介紹了ES6解構(gòu)賦值(數(shù)組,對象,函數(shù))使用詳解,JavaScript 中最常用的兩種數(shù)據(jù)結(jié)構(gòu)是 Object 和 Array,解構(gòu)操作對那些具有很多參數(shù)和默認(rèn)值等的函數(shù)也很奏效,本文通過實例代碼詳細(xì)講解需要的朋友可以參考下2022-11-11
javascript之通用簡單的table選項卡實現(xiàn)(二)
上篇中的選項卡存在這樣的問題:把邏輯封裝在table.js中,不夠靈活,也就是說如果某個選項卡是實現(xiàn)異步請求或者跳轉(zhuǎn),而非div的顯隱切換,那么就得修過table.js來達(dá)到目的,顯然不是我所需要的。2010-05-05
基于JavaScript實現(xiàn)瀑布流效果(循環(huán)漸近)
本文給大家介紹基于javascript實現(xiàn)循環(huán)漸近瀑布流效果,代碼簡單易懂,非常具有參考價值,需要的朋友參考下吧2016-01-01

