JavaScript मधील `कॉल` आणि `लागू` मधील फरक समजून घेणे

JavaScript मधील `कॉल` आणि `लागू` मधील फरक समजून घेणे
JavaScript

JavaScript मध्ये फंक्शन इनव्होकेशन पद्धती

JavaScript फंक्शन्सची विनंती करण्याचे अनेक मार्ग ऑफर करते, त्यापैकी दोन म्हणजे `Function.prototype.call()` आणि `Function.prototype.apply()`. दोन्ही पद्धती निर्दिष्ट `हे` मूल्य आणि वितर्कांसह फंक्शन्स कॉल करतात, परंतु हे वितर्क कसे पास केले जातात त्यामध्ये ते भिन्न आहेत.

हा लेख `कॉल` आणि `लागू` मधील फरक, त्यांचे कार्यप्रदर्शन परिणाम आणि परिस्थिती ज्यामध्ये एकाला दुसऱ्यापेक्षा प्राधान्य दिले जाऊ शकते हे शोधण्याचा उद्देश आहे. शेवटी, तुम्हाला तुमच्या JavaScript कोडमध्ये `कॉल` किंवा `अप्लाय` कधी वापरायचे याची स्पष्ट समज असेल.

JavaScript मध्ये 'कॉल' आणि 'लागू करा' मधील फरक एक्सप्लोर करणे

JavaScript फ्रंटएंड उदाहरण

// 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

JavaScript मधील `कॉल` वि `लागू` ची कामगिरी समजून घेणे

JavaScript फ्रंटएंड उदाहरण

JavaScript मध्ये फंक्शन इनव्होकेशनसाठी `कॉल` आणि `अप्लाय` यांची तुलना करणे

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

JavaScript डेव्हलपमेंटमध्ये 'कॉल' आणि 'लागू' मधील निवड करणे

JavaScript कार्यप्रदर्शन विश्लेषण

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() आणि तुमची JavaScript प्रोग्रामिंग वाढवणारी अनेक प्रगत वापर प्रकरणे आहेत. अशी एक वापर प्रकरण पद्धत कर्ज घेणे आहे, जिथे एका ऑब्जेक्टच्या पद्धती दुसऱ्याद्वारे उधार घेतल्या जातात. हे विशेषतः उपयोगी आहे जेव्हा तुमच्याकडे एखादे ऑब्जेक्ट असेल ज्याला वारसा न घेता दुसऱ्या ऑब्जेक्टची पद्धत वापरण्याची आवश्यकता असते. वापरत आहे call() आणि apply(), तुम्ही तात्पुरत्या पद्धती उधार घेऊ शकता आणि वेगवेगळ्या ऑब्जेक्ट्सच्या संदर्भात त्या अंमलात आणू शकता, ज्यामुळे कोडची पुन: उपयोगिता वाढेल आणि रिडंडंसी कमी होईल.

विचारात घेण्यासाठी आणखी एक महत्त्वाचा पैलू म्हणजे वापर apply() व्हेरिएडिक फंक्शन्ससाठी-फंक्शन्स जे वितर्कांच्या व्हेरिएबल संख्या स्वीकारतात. जेव्हा तुमच्याकडे वितर्कांचा ॲरे असतो आणि तुम्हाला ते ॲरे स्वीकारत नसलेल्या फंक्शनमध्ये पास करावे लागतात, apply() अत्यंत सुलभ होते. दुसरीकडे, call() कार्यप्रदर्शन गंभीर आहे आणि वितर्कांची संख्या ज्ञात आणि निश्चित आहे अशा परिस्थितीत उपयुक्त असू शकते. या बारकावे समजून घेऊन, विकासक कधी वापरायचे याबद्दल अधिक माहितीपूर्ण निर्णय घेऊ शकतात call() विरुद्ध apply(), वाचनीयता आणि कार्यप्रदर्शन दोन्हीसाठी त्यांचा कोड ऑप्टिमाइझ करत आहे.

JavaScript मध्ये कॉल आणि अर्ज करण्याबद्दल वारंवार विचारले जाणारे प्रश्न

  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() अशा फंक्शन्ससाठी आदर्श आहे ज्यांना वितर्कांची व्हेरिएबल संख्या हाताळण्याची आवश्यकता आहे.

फंक्शन इनव्होकेशन पद्धतींवर अंतिम विचार

शेवटी, दोन्ही ३३ आणि ३४ जावास्क्रिप्टमध्ये निर्दिष्ट केलेल्या फंक्शन्सची विनंती करण्यासाठी पद्धती ही शक्तिशाली साधने आहेत this मूल्य. त्यांच्यातील निवड मुख्यत्वे तुम्ही फंक्शनमध्ये युक्तिवाद कसे पास करू इच्छिता यावर अवलंबून असते. असताना ३३ ठराविक वितर्क हाताळताना सर्वोत्तम आहे, ३४ ॲरे किंवा अज्ञात आर्ग्युमेंट्स हाताळताना चमकते. या बारकावे समजून घेतल्याने अधिक कार्यक्षम आणि वाचनीय कोड लिहिण्यास मदत होते, ज्यामुळे शेवटी चांगले JavaScript प्रोग्रामिंग सराव होतो.