JavaScript Nesne Erişimcis
- Önceki Sayfa JS Nesne Gösterimi
- Sonraki Sayfa JS Nesne Yapıcıları
JavaScript Erişimcisileri (Getter ve Setter)
ECMAScript 5 (2009), Getter ve Setter'ı tanıttı.
Getter ve setter, sınıflandırılmış erişimcisiler (hesaplanmış özellikler) tanımlamanıza olanak tanır.
JavaScript Getter(get anahtar kelimesi)
Bu örnek lang
Öznitelik ile alınır language
Öznitelik değeri.
Örnek
// Nesne oluşturma: }} var person = { firstName: "Bill", lastName : "Gates", language : "en", get lang() { return this.language; } }; // Getter kullanarak objeden gelen verileri göster: document.getElementById("demo").innerHTML = person.lang;
JavaScript Setter(set anahtar kelimesi)
Bu örnek lang
Öznitelik ile ayarlanır language
Öznitelik değeri.
Örnek
var person = { firstName: "Bill", lastName : "Gates", language : "", set lang(lang) { this.language = lang; } }; // Setter kullanarak nesne özelliğini ayarlayın: person.lang = "en"; // Objeden gelen verileri göster: document.getElementById("demo").innerHTML = person.language;
JavaScript fonksiyonu mu, Getter mi?
İki örnek arasındaki fark nerede?
Örnek 1
var person = { firstName: "Bill", lastName : "Gates", fullName : function() { return this.firstName + " " + this.lastName; } }; // Object'tan gelen verileri göstermek için yöntem kullanın: document.getElementById("demo").innerHTML = person.fullName();
Örnek 2
var person = { firstName: "Bill", lastName : "Gates", get fullName() { return this.firstName + " " + this.lastName; } }; // Getter kullanarak objeden gelen verileri göster: document.getElementById("demo").innerHTML = person.fullName;
Örnek 1, fullName özelliğini fonksiyon olarak erişir: person.fullName()。
Örnek 2, fullName özelliğini属性 olarak erişir: person.fullName。
İkinci örnek daha basit bir dil sunar.
Veri kalitesi
Getter ve setter kullanılırken, JavaScript daha iyi veri kalitesi sağlayabilir.
Bu örnekte: lang
Öznitelik büyük harflerle döndürülür language
Öznitelik değeri:
Örnek
// Nesne oluşturma: }} var person = { firstName: "Bill", lastName : "Gates", language : "en", get lang() { return this.language.toUpperCase(); } }; // Getter kullanarak objeden gelen verileri göster: document.getElementById("demo").innerHTML = person.lang;
Bu örnekte: lang
Değerleri büyük harflere kaydeder language
Özelliklerde:
Örnek
var person = { firstName: "Bill", lastName : "Gates", language : "", set lang(lang) { this.language = lang.toUpperCase(); } }; // Setter kullanarak nesne özelliğini ayarlayın: person.lang = "en"; // Objeden gelen verileri göster: document.getElementById("demo").innerHTML = person.language;
Getter ve Setter neden kullanılır?
- Daha basit bir dilbilgisi sunar
- Özellik ve yöntemlerin dilbilgisi aynıdır
- Daha iyi veri kalitesi sağlar
- Arka planda çalışmalara yararlıdır
Bir sayıcı örneği
Örnek
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; } }; // Sayac operasyonu: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement; Object.defineProperty()
Object.defineProperty()
Getter ve Setter eklemek için de kullanılabilir:
Örnek
// 定义对象 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;} }); // Sayac operasyonu: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
Tarayıcı Desteği
Internet Explorer 8 veya daha eski sürümler Getter ve Setter'ları desteklememektedir:
Evet | 9.0 | Evet | Evet | Evet |
- Önceki Sayfa JS Nesne Gösterimi
- Sonraki Sayfa JS Nesne Yapıcıları