คำตอบที่ได้รับการยอมรับนั้นยอดเยี่ยมมาก จะเป็นการดีที่สุดหากคุณต้องการใช้ไวยากรณ์ของฟังก์ชันปกติแทน"ไวยากรณ์ของฟังก์ชันลูกศร" ที่กะทัดรัด
แต่บางทีคุณอาจชอบฟังก์ชั่นลูกศร บางทีคุณอาจจะใช้ฟังก์ชั่นลูกศรด้วยเหตุผลอื่นที่ไวยากรณ์การทำงานตามปกติไม่สามารถแทนที่ ; คุณอาจต้องการโซลูชันอื่น
ตัวอย่างเช่นฉันสังเกตเห็นการใช้ 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)
คุณก็สามารถพูดได้