Setter dan getters di JavaScript adalah metode yang kurang terpapar pada waktu normal. Mereka bukan metode standar itu sendiri dan hanya didukung di browser non -e (mungkin ada metode lain yang dapat dilakukan oleh IE kernel? Saya tidak tahu solusinya untuk saat ini), tetapi menggunakannya dapat melakukan banyak hal, seperti:
1. Pembatasan akses data:
A.Value adalah panggilan metode pengambil ke variabel nilai. Jika pengecualian dilemparkan dalam implementasi metode Getter, akses ke variabel nilai dapat diblokir.
2. Dengarkan variabel DOM:
Window.name adalah atribut DOM yang sangat berguna di seluruh domain (dikenal dengan detailnya, lihat Baidu untuk detailnya). Jika Anda mengganti implementasi setter dari Window.name, Anda dapat mewujudkan komunikasi memori asinkron di seluruh halaman.
3. Gunakan imajinasi Anda dan dapat melakukan banyak hal
Semua hal berikut ditransfer:
Pertama, mari kita lihat sekilas apa yang ada dan mengapa mereka berguna. Lalu, mari kita lihat platform mana yang sekarang mendukung gettets dan setter.
Getters dan setter
Getters dan Setter memungkinkan Anda untuk dengan cepat mendapatkan atau mengatur data suatu objek. Secara umum, suatu objek memiliki dua metode, yang digunakan untuk mendapatkan dan menetapkan nilai tertentu, seperti:
{getValue: function () {return this._value;}, setValue: function (val) {this._value = val;}}Salah satu manfaat yang jelas dari menulis JavaScript dengan cara ini adalah Anda dapat menggunakannya untuk menyembunyikan atribut yang tidak ingin Anda akses langsung oleh dunia luar. Kode akhir terlihat seperti ini (simpan nilai objek yang baru diajukan dengan penutupan):
Bidang fungsi (val) {var value = val; this.getValue = function () {value return;}; this.setValue = function (val) {value = val;};}Jadi kita bisa menggunakannya seperti ini:
var field = bidang baru ("test"); field.value // => undefinedfield.setValue ("test2") field.getValue () // => "test2"Mari kita simulasikan "atribut nilai tersembunyi" dalam contoh di atas, dan kode kita terlihat seperti ini:
bidang fungsi (val) {var value = val; this .__ defineGetter __ ("value", function () {value return;}); this .__ definesetter __ ("value", function (val) {value = val;});}Namun, Anda tidak suka menulis dengan cara ini, dan cenderung mendefinisikan getter dan setter dalam prototipe objek (tidak masalah di mana variabel pribadi ditulis), kita dapat menggunakan sintaks lain.
Bidang fungsi (val) {this.value = val;} field.prototype = {get value () {return this._value;}, set value (val) {this._value = val;}};Sintaks ini terlihat luar biasa, tetapi setelah menggunakannya untuk sementara waktu, mudah untuk menerimanya.
Berikutnya adalah contoh lain, yang memungkinkan dunia luar untuk mendapatkan array nama pengguna, tetapi tidak bisa mendapatkan objek pengguna asli yang tersembunyi.
situs fungsi (pengguna) {this .__ definegetter __ ("users", function () {// js 1.6 array peta () return user.map (function (user) {return user.name;});};}Ingat poin -poin berikut:
Dalam suatu objek, setiap variabel hanya dapat memiliki satu pengambil atau setter. (Jadi nilai dapat memiliki pengambil dan setter, tetapi nilai tidak pernah memiliki dua getter)
Satu -satunya cara untuk menghapus pengambil atau setter adalah: Hapus objek [Nama]. Hapus dapat menghapus beberapa properti umum, getters dan setter.
Jika Anda menggunakan __DefineGetter__ atau __Definesetter__, itu mengesampingkan pengambil atau setter dengan nama yang sama yang ditentukan sebelumnya, atau bahkan properti (properti).
platform
Browser yang didukung adalah:
Firefox
Safari 3+
Opera 9.5
Di atas adalah deskripsi lengkap dari metode setter dan getter yang diperkenalkan dalam JavaScript yang telah diperkenalkan oleh editor kepada Anda. Saya harap ini akan membantu Anda. Jika Anda ingin tahu lebih banyak, harap perhatikan wulin.com.