ฉันมีความเข้าใจ Javascript ค่อนข้างดียกเว้นว่าฉันไม่สามารถหาวิธีที่ดีในการตั้งค่าตัวแปร "this" พิจารณา:
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
มีวิธีการทำเช่นนี้โดยไม่ต้อง 4 บรรทัดสุดท้ายหรือไม่? มันค่อนข้างน่ารำคาญ ... ฉันได้ลองผูกฟังก์ชั่นที่ไม่ระบุตัวตนซึ่งฉันคิดว่ามันสวยงามและฉลาด แต่ก็ไม่มีประโยชน์:
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.
เห็นได้ชัดว่าการส่งผ่านตัวแปรไปยังฟังก์ชั่นของฉันเป็นตัวเลือก ... แต่นั่นไม่ใช่ประเด็นของคำถามนี้
ขอบคุณ
$.proxy(function, element)
เพื่อที่ว่าเมื่อใดก็ตามที่เรียกใช้ฟังก์ชันนั้นฟังก์ชันนั้นจะอยู่ในบริบทขององค์ประกอบ api.jquery.com/jquery.proxy