Sử dụng các phương thức cá thể làm cuộc gọi lại cho các trình xử lý sự kiện sẽ thay đổi phạm vi this
từ "Ví dụ của tôi" thành "Bất cứ điều gì chỉ được gọi là cuộc gọi lại" . Vì vậy, mã của tôi trông như thế này
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
Nó hoạt động, nhưng đó là cách tốt nhất để làm điều đó? Nó có vẻ lạ đối với tôi.
this
động trong JavaScript. Nó được xác định khi hàm được gọi , không phải khi nó được khai báo."
self === this
. Do đó, self
trong bối cảnh địa phương có ý nghĩa và đang theo mô hình.
self
vì có mộtwindow.self
đối tượng và cuối cùng bạn có thể vô tình sử dụng nó nếu bạn quên khai báoself
var của chính mình (ví dụ như khi di chuyển một số mã xung quanh). Điều này có thể gây khó chịu để phát hiện / gỡ lỗi. Tốt hơn để sử dụng một cái gì đó như_this
.