JavaScript中setter和getter方法介紹 - 程式前沿
文章推薦指數: 80 %
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
延伸文章資訊
- 1JavaScript Object Accessors - W3Schools
ECMAScript 5 (ES5 2009) introduced Getter and Setters. Getters and setters allow you to define Ob...
- 27天搞懂JS進階議題(day05)-getter & setter: 屬性描述器
7天搞懂JS進階議題(day05)-getter & setter: 屬性描述器. February 27, 2020. 本系列文章討論JS 物件導向設計相關的特性。 不含CSS,不含HTML!...
- 3[JS] Getter and Setter 筆記 - pcwu's TIL Notes
[JS] Getter and Setter 筆記. 12 Feb 2017. JavaScript. 在JavaScript 中如果Class 在取屬性值或設定屬性值時,如果有比較複雜的運用時...
- 4JS Getter 與Setter DAY71 - iT 邦幫忙::一起幫忙解決難題
Setter 與Setter Getter: 取得特定值的方法Setter: 存值的方法Getter var wallet = { total: 100, set save(price){ th...
- 5setter - JavaScript - MDN Web Docs
最少要有一個參數(請參見Incompatible ES5 change: literal getter and setter functions must now have exactly ze...