जावास्क्रिप्ट में `कॉल` और `लागू` के बीच अंतर को समझना

जावास्क्रिप्ट में `कॉल` और `लागू` के बीच अंतर को समझना
JavaScript

जावास्क्रिप्ट में फ़ंक्शन आमंत्रण विधियाँ

जावास्क्रिप्ट फ़ंक्शंस को लागू करने के कई तरीके प्रदान करता है, जिनमें से दो हैं `Function.prototype.call()` और `Function.prototype.apply()`। दोनों विधियाँ निर्दिष्ट `इस` मान और तर्कों के साथ फ़ंक्शन को कॉल करने का काम करती हैं, लेकिन इन तर्कों को पारित करने के तरीके में वे भिन्न हैं।

इस लेख का उद्देश्य 'कॉल' और 'लागू करें' के बीच अंतर, उनके प्रदर्शन निहितार्थ और उन परिदृश्यों का पता लगाना है जहां एक को दूसरे पर प्राथमिकता दी जा सकती है। अंत तक, आपको अपने जावास्क्रिप्ट कोड में `कॉल` या `अप्लाई` का उपयोग कब करना है, इसकी स्पष्ट समझ होगी।

जावास्क्रिप्ट में `कॉल` और `अप्लाई` के बीच अंतर की खोज

जावास्क्रिप्ट फ्रंटएंड उदाहरण

// Example of Function.prototype.call()
const person = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

const person1 = {
  firstName: "John",
  lastName: "Doe"
};

console.log(person.fullName.call(person1)); // John Doe

जावास्क्रिप्ट में `कॉल` बनाम `लागू` के प्रदर्शन को समझना

जावास्क्रिप्ट फ्रंटएंड उदाहरण

// Example of Function.prototype.apply()
const person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + ", " + city + ", " + country;
  }
};

const person2 = {
  firstName: "Jane",
  lastName: "Doe"
};

console.log(person.fullName.apply(person2, ["Oslo", "Norway"])); // Jane Doe, Oslo, Norway

जावास्क्रिप्ट में फ़ंक्शन इनवोकेशन के लिए `कॉल` और `अप्लाई` की तुलना करना

Node.js बैकएंड उदाहरण

const person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + ", " + city + ", " + country;
  }
};

const person3 = {
  firstName: "Alice",
  lastName: "Smith"
};

function printName(method) {
  if (method === 'call') {
    console.log(person.fullName.call(person3, 'Paris', 'France'));
  } else if (method === 'apply') {
    console.log(person.fullName.apply(person3, ['Paris', 'France']));
  }
}

printName('call');  // Alice Smith, Paris, France
printName('apply'); // Alice Smith, Paris, France

जावास्क्रिप्ट विकास में `कॉल` और `लागू` के बीच चयन करना

जावास्क्रिप्ट प्रदर्शन विश्लेषण

const iterations = 1000000;
const person = {
  fullName: function(city, country) {
    return this.firstName + " " + this.lastName + ", " + city + ", " + country;
  }
};
const person4 = {
  firstName: "Bob",
  lastName: "Brown"
};

console.time('call');
for (let i = 0; i < iterations; i++) {
  person.fullName.call(person4, 'Berlin', 'Germany');
}
console.timeEnd('call');

console.time('apply');
for (let i = 0; i < iterations; i++) {
  person.fullName.apply(person4, ['Berlin', 'Germany']);
}
console.timeEnd('apply');

जावास्क्रिप्ट में तरीकों को कॉल करने और लागू करने के बारे में गहन जानकारी

उनके बुनियादी उपयोग के अलावा, Function.prototype.call() और Function.prototype.apply() कई उन्नत उपयोग के मामले हैं जो आपकी जावास्क्रिप्ट प्रोग्रामिंग को बढ़ा सकते हैं। ऐसा ही एक उपयोग मामला विधि उधार लेना है, जहां एक वस्तु से विधियां दूसरे द्वारा उधार ली जाती हैं। यह विशेष रूप से तब उपयोगी होता है जब आपके पास एक ऐसी वस्तु होती है जिसे विरासत के बिना किसी अन्य वस्तु से एक विधि का उपयोग करने की आवश्यकता होती है। का उपयोग करते हुए call() और apply(), आप अस्थायी रूप से तरीकों को उधार ले सकते हैं और उन्हें विभिन्न वस्तुओं के संदर्भ में निष्पादित कर सकते हैं, जिससे कोड की पुन: प्रयोज्यता बढ़ेगी और अतिरेक कम होगा।

विचार करने योग्य एक अन्य महत्वपूर्ण पहलू का उपयोग है apply() विविध फ़ंक्शंस के लिए - ऐसे फ़ंक्शंस जो तर्कों की एक परिवर्तनीय संख्या को स्वीकार करते हैं। जब आपके पास तर्कों की एक श्रृंखला होती है और आपको उन्हें एक ऐसे फ़ंक्शन में पास करने की आवश्यकता होती है जो किसी सरणी को स्वीकार नहीं करता है, apply() अत्यंत उपयोगी हो जाता है. वहीं दूसरी ओर, call() उन परिदृश्यों में उपयोगी हो सकता है जहां प्रदर्शन महत्वपूर्ण है, और तर्कों की संख्या ज्ञात और निश्चित है। इन बारीकियों को समझकर, डेवलपर्स कब उपयोग करना है इसके बारे में अधिक सूचित निर्णय ले सकते हैं call() बनाम apply(), पठनीयता और प्रदर्शन दोनों के लिए अपने कोड को अनुकूलित करना।

जावास्क्रिप्ट में कॉल और आवेदन के बारे में अक्सर पूछे जाने वाले प्रश्न

  1. के बीच प्राथमिक अंतर क्या है? call() और apply()?
  2. call() जबकि, तर्कों को व्यक्तिगत रूप से स्वीकार करता है apply() तर्कों को एक सरणी के रूप में स्वीकार करता है।
  3. कर सकना call() और apply() परस्पर उपयोग किया जा सकता है?
  4. हां, वे समान परिणाम प्राप्त कर सकते हैं, लेकिन चुनाव इस बात पर निर्भर करता है कि तर्क कैसे संरचित हैं।
  5. मुझे कब पसंद करना चाहिए apply() ऊपर call()?
  6. उपयोग apply() जब आपके पास तर्कों की एक श्रृंखला या तर्कों की एक परिवर्तनीय संख्या हो।
  7. क्या इनके बीच कोई प्रदर्शन अंतर है? call() और apply()?
  8. अधिकांश मामलों में प्रदर्शन अंतर नगण्य हैं, लेकिन call() निश्चित संख्या में तर्कों के साथ थोड़ा तेज़ हो सकता है।
  9. कैसे करें call() और apply() संभालो this प्रसंग?
  10. दोनों विधियाँ स्पष्ट रूप से निर्धारित करती हैं this फ़ंक्शन मंगलाचरण के लिए संदर्भ।
  11. क्या मैं उपयोग कर सकता हूँ call() और apply() कंस्ट्रक्टर फ़ंक्शंस के साथ?
  12. नहीं, वे कंस्ट्रक्टर कार्यों के लिए उपयुक्त नहीं हैं क्योंकि वे नए उदाहरण नहीं बनाते हैं।
  13. कुछ उन्नत उपयोग के मामले किसके लिए हैं? call() और apply()?
  14. वे विधि उधार लेने और विविध कार्यों को संभालने के लिए उपयोगी हैं।
  15. कैसे हुआ call() कोड पठनीयता में सुधार?
  16. call() जब तर्कों की संख्या ज्ञात और निश्चित हो जाती है तो फ़ंक्शन आमंत्रण स्पष्ट हो जाता है।
  17. कर सकना apply() अज्ञात संख्या में तर्कों को संभालें?
  18. हाँ, apply() उन फ़ंक्शंस के लिए आदर्श है जिन्हें विभिन्न प्रकार के तर्कों को संभालने की आवश्यकता होती है।

फ़ंक्शन मंगलाचरण विधियों पर अंतिम विचार

निष्कर्षतः, दोनों call और apply निर्दिष्ट के साथ कार्यों को लागू करने के लिए विधियाँ जावास्क्रिप्ट में शक्तिशाली उपकरण हैं this कीमत। उनके बीच का चुनाव काफी हद तक इस बात पर निर्भर करता है कि आप फ़ंक्शन में तर्क कैसे पारित करना चाहते हैं। जबकि call निश्चित संख्या में तर्कों से निपटते समय सबसे अच्छा है, apply सरणियों या अज्ञात संख्या में तर्कों को संभालते समय चमकता है। इन बारीकियों को समझने से अधिक कुशल और पठनीय कोड लिखने में मदद मिलती है, जिससे अंततः बेहतर जावास्क्रिप्ट प्रोग्रामिंग प्रथाओं को बढ़ावा मिलता है।