คำตอบที่ได้รับการยอมรับนั้นยอดเยี่ยมมาก จะเป็นการดีที่สุดหากคุณต้องการใช้ไวยากรณ์ของฟังก์ชันปกติแทน"ไวยากรณ์ของฟังก์ชันลูกศร" ที่กะทัดรัด
แต่บางทีคุณอาจชอบฟังก์ชั่นลูกศร บางทีคุณอาจจะใช้ฟังก์ชั่นลูกศรด้วยเหตุผลอื่นที่ไวยากรณ์การทำงานตามปกติไม่สามารถแทนที่ ; คุณอาจต้องการโซลูชันอื่น
ตัวอย่างเช่นฉันสังเกตเห็นการใช้ OP thisคุณอาจต้องการผูกthisศัพท์ aka "non-binding of this" ) และฟังก์ชันลูกศรเหมาะสำหรับการผูกศัพท์นั้น
คุณยังคงสามารถใช้ฟังก์ชันลูกศรกับ getter ผ่านทางObject.definePropertyเทคนิค
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
ดูกล่าวถึงobject initializationเทคนิค (aka get NAME() {...})ครับdefinePropertyเทคนิค (akaget : ()=>{} ) มีความแตกต่างอย่างมีนัยสำคัญอย่างน้อยหนึ่งข้อโดยdefinePropertyต้องใช้ตัวแปรที่มีอยู่แล้ว:
การกำหนด getter บนวัตถุที่มีอยู่
คือมีObject.definePropertyคุณต้องแน่ใจว่าyour_obj(ในตัวอย่างของฉัน) มีอยู่และจะถูกบันทึกลงตัวแปร (ในขณะที่มีobject-initializationคุณสามารถส่งคืนวัตถุที่แท้จริงในการเริ่มต้นวัตถุของคุณ: {..., get(){ }, ... }) ข้อมูลเพิ่มเติมObject.definePropertyโดยเฉพาะที่นี่
Object.defineProperty(...)ดูเหมือนว่าจะมีการรองรับเบราว์เซอร์ที่เทียบเท่ากับget NAME(){...}ไวยากรณ์ เบราว์เซอร์ที่ทันสมัย IE 9
(method, url, something) => this.xhr.open(method. url, something)คุณก็สามารถพูดได้