您好,登錄后才能下訂單哦!
本篇內容主要講解“JavaScript對象訪問器有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JavaScript對象訪問器有哪些”吧!
JavaScript訪問器(Getter和Setter),ECMAScript 5(2009)介紹了Getter和Setters。 Getters和setter允許您定義對象訪問器(Computed Properties)。
JavaScript Getter(get關鍵字)
<!DOCTYPE html><html><meta charset="utf-8"><title>js</title><body><h3>JavaScript Getters和Setters</h3><p> Getters和setter允許您通過方法獲取和設置屬性。</p><p>此示例使用lang屬性獲取語言屬性的值。</p><p id="demo"></p><script> // 新建一個對象。 var person = { firstName: "John", lastName : "Doe", language : "en", get lang() { return this.language; } }; // 使用getter顯示來自對象的數據: document.getElementById("demo").innerHTML = person.lang;</script></body></html>
JavaScript Setter (set關鍵字)
<!DOCTYPE html><html><meta charset="utf-8"><title>JavaScript Getters和Setters</title><body><h3> JavaScript Getters和Setters </h3><p> Getters和setter允許您通過方法獲取和設置屬性。</p><p>此示例使用lang屬性設置語言屬性的值。</p><p id="demo"></p><script> // Create an object: var person = { firstName: "John", lastName : "Doe", language : "NO", set lang(value) { this.language = value; } }; // Set a property using set: person.lang = "en"; // Display data from the object: document.getElementById("demo").innerHTML = person.language;</script></body></html>
使用JavaScript函數還是Getter?
這兩個例子之間有什么區別?
示例1:
var person = { firstName: "John", lastName : "Doe", fullName : function() { return this.firstName + " " + this.lastName; }};// 使用方法顯示對象的數據:document.getElementById("demo").innerHTML = person.fullName();
示例2:
var person = { firstName: "John", lastName : "Doe", get fullName() { return this.firstName + " " + this.lastName; }};// 使用getter顯示來自對象的數據:document.getElementById("demo").innerHTML = person.fullName;
示例1將fullName作為函數訪問:person.fullName()。示例2將fullName作為屬性訪問:person.fullName。第二個示例提供了更簡單的語法。
數據質量
使用getter和setter時,JavaScript可以確保更好的數據質量。lang在此示例中,使用屬性language以大寫形式返回屬性的值:
// 創建一個對象:var person = { firstName: "John", lastName : "Doe", language : "en", get lang() { return this.language.toUpperCase(); }};// 使用getter顯示來自對象的數據:document.getElementById("demo").innerHTML = person.lang;
lang在此示例中,使用該屬性將大寫值存儲在language屬性中:
var person = { firstName: "John", lastName : "Doe", language : "", set lang(lang) { this.language = lang.toUpperCase(); }};// 使用setter設置對象屬性:person.lang = "en";// 顯示來自對象的數據:document.getElementById("demo").innerHTML = person.language;
為什么使用Getter和Setter?
● 它提供了更簡單的語法
● 它允許屬性和方法的語法相同
● 它可以確保更好的數據質量
● 在幕后做事情很有用
<!DOCTYPE html><html><meta charset="utf-8"><title>js</title><body><h3> JavaScript Getters和Setters </h3><p>完美的創建反對象:</p><p id="demo"></p><script> var obj = { counter : 0, get reset() { this.counter = 0; }, get increment() { this.counter++; }, get decrement() { this.counter--; }, set add(value) { this.counter += value; }, set subtract(value) { this.counter -= value; } }; // Play with the counter: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement; // Display the counter: document.getElementById("demo").innerHTML = obj.counter;</script></body></html>
Object.defineProperty()
Object.defineProperty()方法還可用于添加Getters和Setter:
// 定義對象var obj = {counter : 0};// 定義 settersObject.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:
9.0+ 支持
到此,相信大家對“JavaScript對象訪問器有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。