स्वीकृत उत्तर महान है। यदि आप कॉम्पैक्ट "तीर फ़ंक्शन सिंटैक्स" के बजाय सामान्य फ़ंक्शन सिंटैक्स का उपयोग करना चाहते हैं तो यह सबसे अच्छा है ।
लेकिन शायद आप वास्तव में तीर के कार्यों को पसंद करते हैं; हो सकता है कि आप किसी अन्य फ़ंक्शन के लिए तीर फ़ंक्शन का उपयोग करते हैं जो एक सामान्य फ़ंक्शन सिंटैक्स को प्रतिस्थापित नहीं कर सकता है ; आपको एक अलग समाधान की आवश्यकता हो सकती है।
उदाहरण के लिए, मैं ओपी उपयोगों को नोटिस करता हूं this
, आप लेक्सिकली बांधनाthis
चाह सकते हैं ; उर्फ "इस के गैर-बाध्यकारी" ), और तीर के कार्य उस शाब्दिक बंधन के लिए अच्छे हैं।
आप अभी भी Object.defineProperty
तकनीक के माध्यम से एक गेटर के साथ एक तीर फ़ंक्शन का उपयोग कर सकते हैं ।
{
...
Object.defineProperty(your_obj, 'status', {
get : () => this.xhr.status
});
...
}
देखें का उल्लेख object initialization
तकनीक (उर्फ get NAME() {...}
) बनाम defineProperty
तकनीक (उर्फ get : ()=>{}
) । कम से कम एक महत्वपूर्ण अंतर है, defineProperty
पहले से मौजूद चर की आवश्यकता होती है:
मौजूदा वस्तुओं पर एक गटर को परिभाषित करना
यानी आपके साथ Object.defineProperty
यह सुनिश्चित करना चाहिए कि your_obj
(मेरे उदाहरण में) मौजूद है और एक चर में सहेजा गया है (जबकि आपके साथ object-initialization
आप ऑब्जेक्ट-शाब्दिक रूप से अपने ऑब्जेक्ट इनिशियलाइज़ेशन में लौट सकते हैं:) {..., get(){ }, ... }
। विशेष रूप से यहाँ पर अधिक जानकारीObject.defineProperty
Object.defineProperty(...)
लगता है get NAME(){...}
वाक्यविन्यास के लिए तुलनीय ब्राउज़र समर्थन है ; आधुनिक ब्राउज़र, IE 9।
(method, url, something) => this.xhr.open(method. url, something)
।