Hãy bắt đầu bằng cách sửa chữa mã của bạn. Bạn có một khai báo hàm vô dụng, bạn có thể sử dụng $.proxy
như
$('a').on('click', $.proxy(this.close, this));
Bây giờ, giải pháp thứ hai dựa trên self
- chỉ đòi hỏi cơ bản javascript kiến thức
- không đòi hỏi jQuery
- là dễ đọc hơn một chút, đặc biệt khi bạn thường sử dụng lại biến số
self
- của bạn nhanh hơn nhiều
Đó có thể là lý do tại sao nó được sử dụng nhiều hơn.
Lưu ý rằng khi bạn không cần phải tương thích với IE8, bạn có thể sử dụng bind:
$('a').on('click', this.close.bind(this));
Nguồn
2013-03-08 13:38:13
Tôi thích '$ .proxy()' –
Thống kê cá nhân của tôi vẫn ở khoảng năm mươi lăm mươi. Trong tất cả sự nghiêm túc: Chọn một và gắn bó với nó. FYI, '$ .proxy' giống như phương thức' .bind' gốc của hàm. –
Nhanh hơn như thế nào? Về mặt thực thi, bạn phải [điểm chuẩn] (http://jsperf.com). Tôi thích cái gì hơn? Tôi muốn đi với tùy chọn thứ hai bởi vì nó chỉ dễ đọc hơn với tôi. –