ฉันไม่แน่ใจถึงแนวทางที่ดีที่สุดในการจัดการขอบเขตของ "this" ใน TypeScript
นี่คือตัวอย่างของรูปแบบทั่วไปในโค้ดที่ฉันกำลังแปลงเป็น TypeScript:
class DemonstrateScopingProblems {
private status = "blah";
public run() {
alert(this.status);
}
}
var thisTest = new DemonstrateScopingProblems();
// works as expected, displays "blah":
thisTest.run();
// doesn't work; this is scoped to be the document so this.status is undefined:
$(document).ready(thisTest.run);
ตอนนี้ฉันสามารถเปลี่ยนการโทรเป็น ...
$(document).ready(thisTest.run.bind(thisTest));
... ซึ่งได้ผล แต่มันค่อนข้างน่ากลัว หมายความว่าโค้ดทั้งหมดสามารถคอมไพล์และทำงานได้ดีในบางสถานการณ์ แต่ถ้าเราลืมผูกขอบเขตมันจะพัง
ฉันต้องการวิธีที่จะทำภายในชั้นเรียนเพื่อที่เมื่อใช้ชั้นเรียนเราไม่จำเป็นต้องกังวลว่า "สิ่งนี้" จะถูกกำหนดขอบเขตไว้อย่างไร
ข้อเสนอแนะใด ๆ ?
อัปเดต
อีกวิธีหนึ่งที่ใช้ได้ผลคือการใช้ลูกศรอ้วน:
class DemonstrateScopingProblems {
private status = "blah";
public run = () => {
alert(this.status);
}
}
เป็นแนวทางที่ถูกต้องหรือไม่?