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 thistừ "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 đó, selftrong bối cảnh địa phương có ý nghĩa và đang theo mô hình.
selfvì 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áoselfvar 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.