$.proxy của JQuery dùng để làm gì?
Nếu các bạn mở từ điển ra tra cứu thì từ proxy được dịch ra là “người ủy nhiệm” hoặc là “sự ủy nhiệm”. Vậy method $.proxy của JQuery được “ủy nhiệm” để làm gì? Để làm sáng tỏ vấn đề, chúng ta cần vài ví dụ. Mình xin copy ví dụ từ trang api về $.proxy tại ...
Nếu các bạn mở từ điển ra tra cứu thì từ proxy được dịch ra là “người ủy nhiệm” hoặc là “sự ủy nhiệm”. Vậy method $.proxy của JQuery được “ủy nhiệm” để làm gì?
Để làm sáng tỏ vấn đề, chúng ta cần vài ví dụ. Mình xin copy ví dụ từ trang api về $.proxy tại http://api.jquery.com/jQuery.proxy/ của JQuery
var obj = { name: "John", test: function() { alert( this.name ); $("#test").unbind("click", obj.test); } }; $("#test").click( jQuery.proxy( obj, "test" ) );
Khi cái nút có id là “test” được click lên thì sẽ hiển thị ra message box có text là “John”. Các bạn có thể thử kết quả bằng cách click vào cái nút bên dưới
Nhưng đó là khi chúng ta dùng method $.proxy. Nếu chúng ta không dùng method $.proxy thì chuyện gì sẽ xảy ra
var obj = { name: "John", test: function() { alert( this.name ); $("#test").unbind("click", obj.test); } }; $("#test").click(obj.test);
Để biết được chuyện gì sẽ xảy ra, các bạn hãy bấm vào cái nút bên dưới
Như vậy khi chúng ta không sử dụng method $.proxy thì tên được hiển thị là tên của cái nút chứ không phải tên của obj. Từ đó, chúng ta suy ra là khi không sử dụng $.proxy đối tượng được trỏ tới là cái nút chứ không phải là obj trong context(ngữ cảnh) này.
Như vậy, khi chúng ta muốn “gắn” event handler vào một element nào đó mà context(ngữ cảnh) của element đang “bị” trỏ đến một đối tượng khác thì method $.proxy đúng là vị cứu tinh của chúng ta