JavaScript中setter和getter方法介紹
javascript中的setter、getter是平時接觸比較少的方法,其本身也并不是標準方法,只在非ie瀏覽器里支持(ie內(nèi)核也許有其他方法可以做到呢?暫時不知其解),但是加以利用可以做許多事情,比如:
1、對數(shù)據(jù)的訪問限制:
a.value是對value變量的getter方法調(diào)用,如果在getter方法實現(xiàn)中拋出異常,可以阻止對value變量的訪問
2、對dom變量進行監(jiān)聽:
window.name是一個跨域非常好用的dom屬性(大名鼎鼎,詳見百度),如果覆蓋window.name的setter實現(xiàn)則可以實現(xiàn)跨頁面的內(nèi)存異步通信
3、自己發(fā)揮想象力,能做的事情好多滴
以下皆轉(zhuǎn):
首先,我們先來快速了解什么是Getters和Setters,以及它們?yōu)槭裁春苡杏谩H缓?,我們來看看現(xiàn)在都有哪些平臺支持Gettets和Setters。
Getters和Setters
Getters和Setters使你可以快速獲取或設置一個對象的數(shù)據(jù)。一般來說,一個對象擁有兩個方法,分別用于獲取和設置某個值,比如:
{ getValue: function(){ return this._value; }, setValue: function(val){ this._value = val; } }
用這種方式寫JavaScript的一個明顯的好處是:你可以用它來隱藏那些不想讓外界直接訪問的屬性。最終的代碼看起來就像下面這樣(用閉包保存新創(chuàng)建的Filed對象的value):
function Field(val){ var value = val; this.getValue = function(){ return value; }; this.setValue = function(val){ value = val; }; }
于是我們可以這樣使用:
var field = new Field("test"); field.value // => undefined field.setValue("test2") field.getValue() // => "test2"
我們來模擬上例中的 “隱藏的value屬性”,我們的代碼就像這樣:
function Field(val){ var value = val; this.__defineGetter__("value", function(){ return value; }); this.__defineSetter__("value", function(val){ value = val; }); }
但是呢,你不喜歡這樣寫,而傾向在對象的prototype中定義getters和setters(私有變量寫在哪并不重要),我們可以用另一種語法。
function Field(val){ this.value = val; } Field.prototype = { get value(){ return this._value; }, set value(val){ this._value = val; } };
這種語法看起來很不可思議,但是使用過一段時間之后,接受它也很容易。
接下來是另一個例子,它允許外界獲取一個username數(shù)組,但是卻不能獲取原始的,隱藏的user對象。
function Site(users){ this.__defineGetter__("users", function(){ // JS 1.6 Array map() return users.map(function(user){ return user.name; }); }; }
記住以下幾點:
一個對象內(nèi),每個變量只能有一個getter或setter。(因此value可以有一個getter和一個setter,但是value絕沒有兩個getters)
刪除getter或setter的唯一方法是:delete object[name]。delete可以刪除一些常見的屬性,getters和setters。
如果使用__defineGetter__或__defineSetter__,它會重寫之前定義的相同名稱的getter或setter,甚至是屬性(property)。
平臺
支持的瀏覽器有:
Firefox
Safari 3+
Opera 9.5
以上所述是小編給大家介紹的JavaScript中setter和getter方法介紹的全部敘述,希望對大家有所幫助,如果大家想了解更多內(nèi)容,敬請關注腳本之家。
相關文章
經(jīng)常用到的javascript驗證函數(shù)收集
經(jīng)常用到的javascript驗證函數(shù)收集...2007-11-11javascript實現(xiàn)fetch請求返回的統(tǒng)一攔截
這篇文章主要介紹了javascript實現(xiàn)fetch請求返回的統(tǒng)一攔截,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-12-12JavaScript實現(xiàn)點擊文本自動定位到下拉框選中操作
這篇文章主要介紹了JavaScript實現(xiàn)點擊文本自動定位到下拉框選中操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06利用uniapp+vue3+js適配微信隱私協(xié)議開發(fā)指南
這篇文章主要給大家介紹了關于利用uniapp+vue3+js適配微信隱私協(xié)議開發(fā)指南的相關資料,適配最新微信小程序隱私協(xié)議開發(fā)指南,兼容uniapp版本,需要的朋友可以參考下2023-12-12