दिलचस्प पोस्ट
एंड्रॉइड में इंटेन्ट स्रोत कैसे ढूंढें? MarkForCheck () में अंतर क्या है और पता लगाएं (चेंज) "Excel में संपादित करें" या "फ़ोटो संपादित करें" एक्सटेंशन जोड़ें JSF 2.0 समग्र घटक के साथ एक गतिशील सूची कैसे लागू करें? सूचियों में आइटम की सूचि के भीतर सूची संलग्न करना क्या आईफोन के लिए कोई ज़िप डीकंप्रेस है? mysqli_fetch_array जबकि लूप कॉलम MATLAB में भारित यादृच्छिक संख्या डिफ़ॉल्ट नाम स्थान वाले XML दस्तावेज़ों पर XPath का उपयोग कैसे करें C # का उपयोग कर छवि को कैसे क्रॉप करना है? कॉर्डोवा ऐप iPhone X (सिम्युलेटर) पर सही ढंग से प्रदर्शित नहीं कर रहा है एंड्रॉइड स्टूडियो डिवाइस नहीं देखता है स्ट्रिंग लिटरल संशोधित सी ++ में "आभासी टेम्पलेट फ़ंक्शन" कैसे प्राप्त करें पायथन अनुरोध पुस्तकालय का उपयोग करके एक बड़ी फ़ाइल सहेजें

"यह" क्या ES6 में तीर कार्यों में है?

मैंने कई जगहों में पढ़ा है कि मुख्य अंतर यह है कि " this बायां कार्यों में बाध्य है।" यह सब अच्छी तरह से और अच्छा है, लेकिन मुझे नहीं पता कि इसका क्या अर्थ है।

मुझे पता है इसका मतलब है कि यह समारोह के शरीर को परिभाषित करने वाले ब्रेसिज़ के भीतर अद्वितीय है, लेकिन मैं वास्तव में आपको निम्न कोड का उत्पादन नहीं बता सका, क्योंकि मुझे पता नहीं है कि this क्या उल्लेख है, जब तक कि यह वसा तीर का उल्लेख नहीं कर रहा है फंक्शन स्वयं …. जो उपयोगी नहीं लगता

 var testFunction = () => { console.log(this) }; testFunction(); 

Solutions Collecting From Web of ""यह" क्या ES6 में तीर कार्यों में है?"

एरो फ़ंक्शंस सम्मिलित संदर्भ के this मूल्य को कैप्चर करते हैं

 function Person(){ this.age = 0; setInterval(() => { this.age++; // |this| properly refers to the person object }, 1000); } var p = new Person(); 

इसलिए, सीधे अपने प्रश्न का उत्तर देने के लिए, आपके तीर फ़ंक्शन के अंदर इसका वही मान होता है, जैसा कि तीर फ़ंक्शन को ठीक करने से पहले किया गया था।

बड़ी तस्वीर प्रदान करने के लिए मैं गतिशील और लेक्सिकल बाध्यकारी दोनों की व्याख्या करने जा रहा हूं।

डायनामिक नाम बाध्यकारी

this ऑब्जेक्ट को संदर्भित करता है जिसे विधि पर कहा जाता है। यह एक नियमित रूप से है ताकि SO पर वाक्य पढ़ा जा सके लेकिन यह अभी भी केवल एक वाक्यांश है, बहुत सार है क्या इस वाक्य के लिए एक संगत कोड पैटर्न है?

हाँ वहाँ है:

 const o = { m() { console.log(this) } } // the important patterns: applying methods om(); // logs o o["m"](); // logs o 

m एक विधि है क्योंकि यह this पर निर्भर है om() या o["m"]() मतलब है o को o लागू किया जाता है ये पैटर्न हमारे प्रसिद्ध वाक्यांश में जावास्क्रिप्ट अनुवाद हैं।

एक और महत्वपूर्ण कोड पैटर्न है जिसे आपको ध्यान देना चाहिए:

 "use strict"; const o = { m() { console.log(this) } } // m is passed to f as a callback function f(m) { m() } // another important pattern: passing methods f(om); // logs undefined f(o["m"]); // logs undefined 

यह पिछले पैटर्न के समान है, केवल कोष्ठक अनुपलब्ध हैं। लेकिन परिणाम काफी महत्वपूर्ण हैं: जब आप फ़ंक्शन को m पास करते हैं, तो आप अपने ऑब्जेक्ट / संदर्भ o बाहर खींचते हैं o इसे अब उखाड़ फेंक दिया गया है और this कुछ भी नहीं (सख्त मोड मान लिया गया)

लेक्सिकल (या स्टेटिक) नाम बाध्यकारी

एरो फ़ंक्शंस के पास इसके स्वयं / super / बाध्यकारी arguments हैं। वे उन्हें अपने माता-पिता लेक्सिकल गुंजाइश से प्राप्त करते हैं:

 const toString = Object.prototype.toString; const o = { foo: () => console.log("window", toString.call(this)), bar() { const baz = () => console.log("o", toString.call(this)); baz(); } } o.foo() // logs window [object Window] o.bar() // logs o [object Object] 

एरो फ़ंक्शन this ईएस 6 में आसपास के माता-पिता की तरफ इशारा कर रहा है, इसका मतलब यह है कि यह ES5 में अज्ञात कार्यों की तरह नहीं है …

यह बहुत स्वयं के लिए स्वयं को निर्दिष्ट करने से बचने का बहुत उपयोगी तरीका है जो ईएस 5 में व्यापक रूप से उपयोग किया जाता है …

नीचे दिए गए उदाहरण को देखें, किसी वस्तु के अंदर फ़ंक्शन निर्दिष्ट करें:

 var checkThis = { normalFunction: function () { console.log(this); }, arrowFunction: () => console.log(this) }; checkThis.normalFunction(); //Object {} checkThis.arrowFunction(); //Window {external: Object, chrome: Object, document: document, tmpDebug: "", j: 0…} 

आशा है कि यह कोड शो आपको स्पष्ट विचार दे सकता है। असल में, 'यह' तीर फ़ंक्शन में वर्तमान संदर्भ संस्करण है 'यह' कोड देखें:

 // 'this' in normal function & arrow function var this1 = { number: 123, logFunction: function () { console.log(this); }, logArrow: () => console.log(this) }; this1.logFunction(); // Object { number: 123} this1.logArrow(); // Window 

आप नीचे दिए गए रास्ते का पालन करके इसे समझने की कोशिश कर सकते हैं

 // whatever here it is, function or fat arrow or literally object declare // in short, a pair of curly braces should be appeared here, eg: function f() { // the 'this' here is the 'this' in fat arrow function below, they are // bind together right here // if 'this' is meaningful here, eg. this === awesomeObject is true console.log(this) // [object awesomeObject] let a = (...param) => { // 'this is meaningful here too. console.log(this) // [object awesomeObject] } 

तो वसा तीर समारोह में 'यह' बाध्य नहीं है, इसका मतलब है कि आप यहां 'इस' को कुछ भी बाध्य नहीं कर सकते हैं। नहीं, नहीं होगा। कॉल नहीं होगा। जब आप अपने टेक्स्ट एडिटर में कोड पाठ लिखते हैं तो वसा तीर फंक्शन में 'यह' बाध्य है । वसा तीर समारोह में 'यह' सचमुच अर्थपूर्ण है। आपके कोड को टेक्स्ट एडिटर में यहाँ क्या लिखा जाता है, जो आपके ऐप को वहां पर चला जाता है। जब तक आप इसे पाठ संपादक में नहीं बदलते, तब तक वसा अभिषेक में क्या 'यह' बाध्य नहीं होता । मेरे पूल अंग्रेजी के लिए खेद है …