這篇文章將為大家詳細講解有關(guān)JavaScript的對象訪問器,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
成都創(chuàng)新互聯(lián)公司一直通過網(wǎng)站建設(shè)和網(wǎng)站營銷幫助企業(yè)獲得更多客戶資源。 以"深度挖掘,量身打造,注重實效"的一站式服務,以做網(wǎng)站、成都網(wǎng)站制作、移動互聯(lián)產(chǎn)品、成都營銷網(wǎng)站建設(shè)服務為核心業(yè)務。10余年網(wǎng)站制作的經(jīng)驗,使用新網(wǎng)站建設(shè)技術(shù),全新開發(fā)出的標準網(wǎng)站,不但價格便宜而且實用、靈活,特別適合中小公司網(wǎng)站制作。網(wǎng)站管理系統(tǒng)簡單易用,維護方便,您可以完全操作網(wǎng)站資料,是中小公司快速網(wǎng)站建設(shè)的選擇。
JavaScript訪問器(Getter和Setter),ECMAScript 5(2009)介紹了Getter和Setters。 Getters和setter允許您定義對象訪問器(Computed Properties)。
JavaScript Getter(get關(guān)鍵字)
js JavaScript Getters和Setters
Getters和setter允許您通過方法獲取和設(shè)置屬性。
此示例使用lang屬性獲取語言屬性的值。
JavaScript Setter (set關(guān)鍵字)
JavaScript Getters和Setters JavaScript Getters和Setters
Getters和setter允許您通過方法獲取和設(shè)置屬性。
此示例使用lang屬性設(shè)置語言屬性的值。
使用JavaScript函數(shù)還是Getter?
這兩個例子之間有什么區(qū)別?
示例1:
var person = { firstName: "John", lastName : "Doe", fullName : function() { return this.firstName + " " + this.lastName; } }; // 使用方法顯示對象的數(shù)據(jù): document.getElementById("demo").innerHTML = person.fullName();
示例2:
var person = { firstName: "John", lastName : "Doe", get fullName() { return this.firstName + " " + this.lastName; } }; // 使用getter顯示來自對象的數(shù)據(jù): document.getElementById("demo").innerHTML = person.fullName;
示例1將fullName作為函數(shù)訪問:person.fullName()。示例2將fullName作為屬性訪問:person.fullName。第二個示例提供了更簡單的語法。
數(shù)據(jù)質(zhì)量
使用getter和setter時,JavaScript可以確保更好的數(shù)據(jù)質(zhì)量。lang在此示例中,使用屬性language以大寫形式返回屬性的值:
// 創(chuàng)建一個對象: var person = { firstName: "John", lastName : "Doe", language : "en", get lang() { return this.language.toUpperCase(); } }; // 使用getter顯示來自對象的數(shù)據(jù): document.getElementById("demo").innerHTML = person.lang;
lang在此示例中,使用該屬性將大寫值存儲在language屬性中:
var person = { firstName: "John", lastName : "Doe", language : "", set lang(lang) { this.language = lang.toUpperCase(); } }; // 使用setter設(shè)置對象屬性: person.lang = "en"; // 顯示來自對象的數(shù)據(jù): document.getElementById("demo").innerHTML = person.language;
為什么使用Getter和Setter?
● 它提供了更簡單的語法
● 它允許屬性和方法的語法相同
● 它可以確保更好的數(shù)據(jù)質(zhì)量
● 在幕后做事情很有用
js JavaScript Getters和Setters
完美的創(chuàng)建反對象:
Object.defineProperty()
Object.defineProperty()方法還可用于添加Getters和Setter:
// 定義對象 var obj = {counter : 0}; // 定義 setters Object.defineProperty(obj, "reset", { get : function () {this.counter = 0;} }); Object.defineProperty(obj, "increment", { get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", { get : function () {this.counter--;} }); Object.defineProperty(obj, "add", { set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", { set : function (value) {this.counter -= value;} }); // Play with the counter: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
瀏覽器支持
Internet Explorer 8或更早版本不支持Getters和Setter:
Internet Explorer | Chrome | FireFox | Safari | Opera |
---|---|---|---|---|
9.0+ | 支持 | 支持 | 支持 | 支持 |
關(guān)于JavaScript的對象訪問器是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。