Getter adalah metode untuk mendapatkan nilai atribut, dan setter adalah metode pengaturan nilai atribut. Metode Getter and Setter dapat didefinisikan untuk objek inti yang telah ditentukan atau objek yang ditentukan pengguna, menambahkan properti baru ke objek yang ada.
Ada dua cara untuk mendefinisikan metode pengambil atau setter:
1. Tentukan saat inisialisasi objek
2. Setelah objek didefinisikan, definisi ditambahkan melalui metode __DefineGetter__ dan __Definesetter__.
Satu -satunya hal yang harus dilakukan ketika mendefinisikan metode Getter dan Setter menggunakan proses inisialisasi objek adalah untuk awalan "dapatkan" dalam metode pengambil dan "setel" dalam metode setter.
Hal lain yang perlu diperhatikan adalah bahwa metode Getter tidak memiliki parameter, dan metode setter harus memiliki parameter, yaitu, nilai baru dari atribut yang akan diatur.
Misalnya:
Salinan kode adalah sebagai berikut:
o = {
Nilai: 9,
get b () {return this.value;},
atur setter (x) {this.value = x;}
}
Setelah objek didefinisikan, tambahkan metode Getter atau Setter ke objek, dua metode khusus __DefineGetter__ dan __Definesetter__ digunakan. Dua fungsi ini membutuhkan yang pertama menjadi nama pengambil atau setter, yang diberikan dalam string, dan parameter kedua adalah fungsi sebagai pengambil atau setter.
Misalnya, kami menambahkan atribut satu tahun ke objek tanggal:
Salinan kode adalah sebagai berikut:
Date.prototype .__ defineGetter __ ('year', function () {return this.getlyear ();});
Date.prototype .__ Definesetter __ ('Year', function (y) {this.setlyear (y)});
var sekarang = tanggal baru;
waspada (sekarang.ear);
sekarang.ear = 2006;
waspada (sekarang);
Adapun bentuk mana yang akan diadopsi terutama tergantung pada gaya pemrograman individu, bentuk pertama kompak dan lebih mudah dipahami. Tetapi jika Anda ingin menambahkan Getter atau Setter setelah objek didefinisikan, atau prototipe objek ini tidak ditulis oleh Anda atau built-in, maka Anda harus menggunakan metode kedua.
Berikut adalah implementasi yang menambahkan atribut Innertext ke browser Mozilla:
Salinan kode adalah sebagai berikut:
Htmlelement.prototype .__ definegetter__
(
"Innertext", function ()
// Tentukan metode Getter untuk mendapatkan nilai Innertext,
// jadi kamu bisa membacanya sekarang!
{
var textrange = this.OwnerDocument.createrange ();
// Menggunakan rentang untuk mengambil konten objek
Textrange.Selectnodecontents (ini);
// Hanya dapatkan konten node objek
return textrange.tostring ();
// Berikan Innertext nilai konten node
}