Tôi có một sự hiểu biết khá tốt về Javascript, ngoại trừ việc tôi không thể tìm ra một cách hay để đặt biến "này". Xem xét:
var myFunction = function(){
alert(this.foo_variable);
}
var someObj = document.body; //using body as example object
someObj.foo_variable = "hi"; //set foo_variable so it alerts
var old_fn = someObj.fn; //store old value
someObj.fn = myFunction; //bind to someObj so "this" keyword works
someObj.fn();
someObj.fn = old_fn; //restore old value
Có cách nào để làm điều này mà không có 4 dòng cuối cùng? Điều đó khá khó chịu ... Tôi đã thử ràng buộc một chức năng ẩn danh, điều mà tôi nghĩ là đẹp và thông minh, nhưng không có kết quả:
var myFunction = function(){
alert(this.foo_variable);
}
var someObj = document.body; //using body as example object
someObj.foo_variable = "hi"; //set foo_variable so it alerts
someObj.(function(){ fn(); })(); //fail.
Rõ ràng, chuyển biến vào myFactor là một tùy chọn ... nhưng đó không phải là điểm của câu hỏi này.
Cảm ơn.
$.proxy(function, element)
để bất cứ khi nào hàm đó được gọi, nó sẽ nằm trong ngữ cảnh của phần tử. api.jquery.com/jquery.proxy