Rumah >hujung hadapan web >tutorial js >Pengenalan kepada __defineGetter__ dan __defineSetter__ dalam kemahiran javascript_javascript

Pengenalan kepada __defineGetter__ dan __defineSetter__ dalam kemahiran javascript_javascript

WBOY
WBOYasal
2016-05-16 16:39:421654semak imbas

Getter ialah kaedah untuk mendapatkan nilai atribut, dan Setter ialah kaedah untuk menetapkan nilai atribut. Anda boleh mentakrifkan kaedah getter dan setter untuk sebarang objek teras yang dipratentukan atau objek yang ditakrifkan pengguna, dengan itu menambah sifat baharu pada objek sedia ada.

Terdapat dua cara untuk menentukan kaedah Getter atau Setter:

1. Tentukan
semasa pemulaan objek 2. Selepas objek ditakrifkan, tambah definisi melalui kaedah __defineGetter__ dan __defineSetter__ Object

Satu-satunya perkara yang perlu dilakukan apabila menggunakan proses permulaan objek untuk mentakrifkan kaedah Getter dan Setter ialah menambah "get" di hadapan kaedah getter dan "set" di hadapan kaedah setter.

Perkara lain yang perlu diambil perhatian ialah kaedah pengambil tidak mempunyai parameter dan kaedah penetap mesti mempunyai satu parameter, iaitu nilai baharu atribut yang akan ditetapkan.

Contohnya:

Salin kod Kod adalah seperti berikut:

o = {
nilai:9,
         dapatkan b() {kembali this.value;},
tetapkan setter(x) {this.value = x;}
}  

Selepas objek ditakrifkan, menambah kaedah getter atau setter pada objek memerlukan dua kaedah khas __defineGetter__ dan __defineSetter__. Kedua-dua fungsi ini memerlukan parameter pertama ialah nama pengambil atau penetap, diberikan sebagai rentetan, dan parameter kedua ialah fungsi yang merupakan pengambil atau penetap.

Sebagai contoh, kami menambah atribut tahun pada objek Tarikh:

Salin kod Kod adalah seperti berikut:

Date.prototype.__defineGetter__('year', function() {return this.getFullYear();}); Date.prototype.__defineSetter__('year', function(y) {this.setFullYear(y)});        
var sekarang = Tarikh baharu; makluman(sekarang.tahun); sekarang.tahun = 2006
berjaga-jaga(sekarang);



Borang mana yang hendak digunakan terutamanya bergantung pada gaya pengaturcaraan peribadi anda Bentuk pertama adalah padat dan lebih mudah difahami. Tetapi jika anda ingin menambah Getter atau Setter selepas objek ditakrifkan, atau prototaip objek ini tidak ditulis oleh anda atau objek terbina dalam, maka anda perlu menggunakan kaedah kedua.
Berikut ialah pelaksanaan menambahkan atribut innerText pada pelayar Mozilla:


Salin kod

Kod adalah seperti berikut: HTMLElement.prototype.__defineGetter__ (
"InnerTeks", function()
//takrifkan kaedah getter untuk mendapatkan nilai innerText,
//jadi anda boleh membacanya sekarang!                                                                                                                                 var textRange = this.ownerDocument.createRange();  
//Menggunakan julat untuk mendapatkan semula kandungan objek
             textRange.selectNodeContents(this); //hanya dapatkan kandungan nod objek
              kembalikan textRange.toString(); // berikan innerText nilai kandungan nod
}


Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn