โดยใช้วิธีการเช่นการเรียกกลับเป็นสำหรับการจัดการเหตุการณ์การเปลี่ยนแปลงขอบเขตของthis
จาก"อินสแตนซ์ของฉัน"เพื่อ"สิ่งที่เรียกว่าเพียงแค่โทรกลับ" ดังนั้นรหัสของฉันมีลักษณะเช่นนี้
function MyObject() {
this.doSomething = function() {
...
}
var self = this
$('#foobar').bind('click', function(){
self.doSomethng()
// this.doSomething() would not work here
})
}
มันใช้งานได้ แต่เป็นวิธีที่ดีที่สุดที่จะทำหรือไม่ มันดูแปลกสำหรับฉัน
this
เป็นแบบไดนามิกใน JavaScript ซึ่งจะถูกกำหนดเมื่อมีการเรียกใช้ฟังก์ชันไม่ใช่เมื่อมีการประกาศ"
self === this
สิ่งที่เป็นอยู่ในขอบเขตทั่วโลก ดังนั้นself
ในบริบทท้องถิ่นที่เหมาะสมและเป็นไปตามรูปแบบ
self
เนื่องจากมีwindow.self
วัตถุและคุณสามารถใช้สิ่งนั้นได้โดยไม่ตั้งใจหากคุณลืมประกาศself
var ของคุณเอง(เช่นเมื่อมีการย้ายรหัสไป) สิ่งนี้อาจสร้างความรำคาญในการตรวจพบ / แก้ไข_this
ดีกว่าที่จะใช้สิ่งที่ต้องการ