JavaScript中setter和getter方法介紹 - 程式前沿

文章推薦指數: 80 %
投票人數:10人

javascript中的setter、getter是平時接觸比較少的方法,其本身也並不是標準方法,只在非ie瀏覽器裡支援(ie核心也許有其他方法可以做到呢? 程式語言前端開發IOS開發Android開發雲端運算人工智慧伺服器搜尋資料庫軟體開發工具JavaScript中setter和getter方法介紹2018.06.26前端開發getter,js,setterHOME前端開發JavaScript中setter和getter方法介紹Advertisementjavascript中的setter、getter是平時接觸比較少的方法,其本身也並不是標準方法,只在非ie瀏覽器裡支援(ie核心也許有其他方法可以做到呢?暫時不知其解),但是加以利用可以做許多事情,比如:1、對資料的訪問限制:a.value是對value變數的getter方法呼叫,如果在getter方法實現中丟擲異常,可以阻止對value變數的訪問2、對dom變數進行監聽:window.name是一個跨域非常好用的dom屬性(大名鼎鼎,詳見百度),如果覆蓋window.name的setter實現則可以實現跨頁面的記憶體非同步通訊3、自己發揮想象力,能做的事情好多滴以下皆轉:首先,我們先來快速瞭解什麼是Getters和Setters,以及它們為什麼很有用。

然後,我們來看看現在都有哪些平臺支援Gettets和Setters。

Getters和SettersGetters和Setters使你可以快速獲取或設定一個物件的資料。

一般來說,一個物件擁有兩個方法,分別用於獲取和設定某個值,比如: { getValue:function(){ returnthis._value; }, setValue:function(val){ this._value=val; } }用這種方式寫JavaScript的一個明顯的好處是:你可以用它來隱藏那些不想讓外界直接訪問的屬性。

最終的程式碼看起來就像下面這樣(用閉包儲存新建立的Filed物件的value): functionField(val){ varvalue=val; this.getValue=function(){ returnvalue; }; this.setValue=function(val){ value=val; }; }於是我們可以這樣使用: varfield=newField("test"); field.value //=>undefined field.setValue("test2") field.getValue() //=>"test2"我們來模擬上例中的“隱藏的value屬性”,我們的程式碼就像這樣: functionField(val){ varvalue=val; this.__defineGetter__("value",function(){ returnvalue; }); this.__defineSetter__("value",function(val){ value=val; }); }但是呢,你不喜歡這樣寫,而傾向在物件的prototype中定義getters和setters(私有變數寫在哪並不重要),我們可以用另一種語法。

functionField(val){ this.value=val; } Field.prototype={ getvalue(){ returnthis._value; }, setvalue(val){ this._value=val; } };這種語法看起來很不可思議,但是使用過一段時間之後,接受它也很容易。

接下來是另一個例子,它允許外界獲取一個username陣列,但是卻不能獲取原始的,隱藏的user物件。

functionSite(users){ this.__defineGetter__("users",function(){ //JS1.6Arraymap() returnusers.map(function(user){ returnuser.name; }); }; }記住以下幾點:一個物件內,每個變數只能有一個getter或setter。

(因此value可以有一個getter和一個setter,但是value絕沒有兩個getters)刪除getter或setter的唯一方法是:deleteobject[name]。

delete可以刪除一些常見的屬性,getters和setters。

如果使用__defineGetter__或__defineSetter__,它會重寫之前定義的相同名稱的getter或setter,甚至是屬性(property)。

平臺支援的瀏覽器有:FirefoxSafari3Opera9.5以上所述是小編給大家介紹的JavaScript中setter和getter方法介紹的全部敘述,希望對大家有所幫助,如果大家想了解更多內容,敬請關注指令碼之家。

目錄1.您可能感興趣的文章:您可能感興趣的文章:JavaScript的setter與getter方法Javascript中的getter和setter初識談談因Vue.js引發關於getter和setter的思考javascript中的__defineGetter__和__defineSetter__介紹JavaScript之Getters和Setters平臺支援等詳細介紹淺談JS物件新增getter與setter的5種方法Advertisement写评论取消回覆很抱歉,必須登入網站才能發佈留言。

近期文章Vue中容易被忽視的知識點2019.12.09if我是前端Leader,談談前端框架體系建設2019.12.09Spark入門(一)用SparkShell初嘗Spark滋味2019.12.08Spark入門(二)如何用Idea運行我們的Spark項目2019.12.08Spark入門(三)Spark經典的單詞統計2019.12.08Spark入門(四)Spark的map、flatMap、mapToPair2019.12.08Spark入門(五)Spark的reduce和reduceByKey2019.12.08Spark入門(六)Spark的combineByKey、sortBykey2019.12.08Spark入門(七)Spark的intersection、subtract、union和distinct2019.12.08Spark實戰尋找5億次訪問中,訪問次數最多的人2019.12.08AdvertisementAdvertisement



請為這篇文章評分?