Menggunakan metode instan sebagai panggilan balik untuk penangan acara mengubah ruang lingkup this
dari "Contoh saya" menjadi "Apa pun yang disebut dengan panggilan balik" . Jadi kode saya terlihat seperti ini
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Ini bekerja, tetapi apakah itu cara terbaik untuk melakukannya? Itu terlihat aneh bagiku.
this
dinamis dalam JavaScript. Ini ditentukan saat fungsi dipanggil , bukan saat dideklarasikan."
self === this
. Oleh karena itu, self
dalam konteks lokal masuk akal dan mengikuti pola.
self
karena adawindow.self
objek dan Anda dapat menggunakannya secara tidak sengaja jika Anda lupa untuk mendeklarasikanself
var Anda sendiri (misalnya ketika memindahkan beberapa kode). Ini bisa menjengkelkan untuk menemukan / men-debug. Lebih baik menggunakan sesuatu seperti_this
.