कॉल अप्लाई और बाइंड। और वे कैसे अलग हैं।
किसी भी दैनिक शब्दावली का उपयोग करके कॉल करना सीखें और आवेदन करें।
आपके पास तीन ऑटोमोबाइल हैं your_scooter , your_car and your_jetजो एक ही तंत्र (विधि) से शुरू होते हैं। हमने automobileएक विधि के साथ एक ऑब्जेक्ट बनाया push_button_engineStart।
var your_scooter, your_car, your_jet;
var automobile = {
push_button_engineStart: function (runtime){
console.log(this.name + "'s" + ' engine_started, buckle up for the ride for ' + runtime + " minutes");
}
}
जब कॉल किया जाता है और उपयोग किया जाता है तो समझें। मान लीजिए कि आप एक इंजीनियर हैं और आपके पास है your_scooter, your_carऔर your_jetजो एक push_button_engine_start के साथ नहीं आया था और आप एक तीसरी पार्टी का उपयोग करना चाहते हैंpush_button_engineStart ।
यदि आप कोड की निम्न पंक्तियाँ चलाते हैं, तो वे एक त्रुटि देंगे। क्यों?
//your_scooter.push_button_engineStart();
//your_car.push_button_engineStart();
//your_jet.push_button_engineStart();
automobile.push_button_engineStart.apply(your_scooter,[20]);
automobile.push_button_engineStart.call(your_jet,10);
automobile.push_button_engineStart.call(your_car,40);
तो उपरोक्त उदाहरण सफलतापूर्वक आपके_कूटर, your_car, your_jet ऑटोमोबाइल ऑब्जेक्ट से एक सुविधा देता है।
आइए गहराई से गोता लगाएँ
यहाँ हम कोड की उपरोक्त रेखा को विभाजित करेंगे।
automobile.push_button_engineStartउपयोग की जाने वाली विधि को प्राप्त करने में हमारी मदद कर रहा है।
इसके अलावा हम डॉट नोटेशन का उपयोग करके आवेदन या कॉल का उपयोग करते हैं।
automobile.push_button_engineStart.apply()
अब लागू करें और कॉल दो मापदंडों को स्वीकार करते हैं।
- प्रसंग
- बहस
इसलिए यहां हमने कोड की अंतिम पंक्ति में संदर्भ सेट किया है।
automobile.push_button_engineStart.apply(your_scooter,[20])
कॉल और अप्लाई के बीच अंतर सिर्फ इतना है कि एक एरे के रूप में पैरामीटर स्वीकार करें जबकि कॉल केवल एक अल्पविराम द्वारा अलग किए गए तर्कों की सूची को स्वीकार कर सकता है।
जेएस बिंद समारोह क्या है?
एक बाइंड फंक्शन मूल रूप से होता है जो किसी चीज के संदर्भ को बांधता है और फिर बाद में स्टेज पर निष्पादन के लिए एक वैरिएबल में स्टोर करता है।
चलो हमारे पिछले उदाहरण को और बेहतर बनाते हैं। पहले हमने ऑटोमोबाइल ऑब्जेक्ट से संबंधित एक विधि का उपयोग किया और इसे लैस करने के लिए उपयोग किया your_car, your_jet and your_scooter। अब हम कल्पना करते हैं कि हम push_button_engineStartअपने ऑटोमोबाइल्स को व्यक्तिगत रूप से शुरू करने के लिए अलग से एक अलग रूप देना चाहते हैं जिसे हम चाहते हैं कि निष्पादन के किसी भी बाद के चरण में।
var scooty_engineStart = automobile.push_button_engineStart.bind(your_scooter);
var car_engineStart = automobile.push_button_engineStart.bind(your_car);
var jet_engineStart = automobile.push_button_engineStart.bind(your_jet);
setTimeout(scooty_engineStart,5000,30);
setTimeout(car_engineStart,10000,40);
setTimeout(jet_engineStart,15000,5);
अभी भी संतुष्ट नहीं हैं?
इसे अश्रु के रूप में स्पष्ट करते हैं। प्रयोग करने का समय। हम फ़ंक्शन एप्लिकेशन को कॉल करने और लागू करने के लिए वापस जाएंगे और फ़ंक्शन के मान को संदर्भ के रूप में संग्रहीत करने का प्रयास करेंगे।
नीचे दिया गया प्रयोग विफल हो जाता है क्योंकि कॉल और एप्लिकेशन तुरंत लागू हो जाते हैं, इसलिए, हम कभी भी एक चर में एक संदर्भ संग्रहीत करने के चरण में नहीं पहुंचते हैं, जहां बाइंड फ़ंक्शन शो को चुरा लेता है
var test_function = automobile.push_button_engineStart.apply(your_scooter);