bind()
विधि जावास्क्रिप्ट में फ़ंक्शन संदर्भ और तर्कों के प्रबंधन के लिए एक शक्तिशाली उपकरण है। यह आपको एक नया फ़ंक्शन बनाने की अनुमति देता है, जिसे कॉल करने पर, इसका this
कीवर्ड दिए गए मान पर सेट होता है, और वैकल्पिक रूप से, तर्क पूर्व-सेट होते हैं।
विषयवस्तु की तालिका
bind()
को समझना
call()
और apply()
के विपरीत, जो फ़ंक्शन को तुरंत आमंत्रित करते हैं, bind()
एक नया फ़ंक्शन देता है। इस नए फ़ंक्शन का this
मान आपके द्वारा प्रदान किए गए मान पर स्थायी रूप से सेट होता है। यह अतुल्यकालिक संचालन या उन स्थितियों से निपटने में महत्वपूर्ण है जहां फ़ंक्शन का संदर्भ अप्रत्याशित रूप से बदल सकता है।
सिंटैक्स और पैरामीटर
bind()
के लिए सिंटैक्स सरल है:
let boundFunction = functionToBind.bind(thisArg, arg1, arg2, ...);
functionToBind
: वह फ़ंक्शन जिसे आप बाँधना चाहते हैं।thisArg
: वह मान जो बाध्य फ़ंक्शन के अंदरthis
बन जाएगा।arg1, arg2, ...
: वैकल्पिक तर्क जो बाध्य फ़ंक्शन को कॉल करने पर पूर्व-भरे जाएंगे।
सामान्य उपयोग के मामले
संदर्भ (this
) बनाए रखना
यह शायद bind()
का सबसे लगातार उपयोग है। किसी ऑब्जेक्ट के भीतर एक विधि पर विचार करें:
const myObject = {
name: "Example",
greet: function() {
console.log("Hello, my name is " + this.name);
}
};
setTimeout(myObject.greet, 1000); // 'this' विंडो या अपरिभाषित हो सकता है!
setTimeout(myObject.greet.bind(myObject), 1000); // 'this' सही ढंग से बाध्य है
आंशिक अनुप्रयोग
bind()
आपको कुछ तर्कों को पूर्व-सेट करने देता है, फ़ंक्शन का एक विशिष्ट संस्करण बनाता है:
function add(x, y) {
return x + y;
}
const addFive = add.bind(null, 5);
console.log(addFive(3)); // आउटपुट: 8
करिंग
करिंग एक फ़ंक्शन को बदल देता है जो कई तर्क लेता है, फ़ंक्शनों के क्रम में जो प्रत्येक एक एकल तर्क लेता है। bind()
इसमें मदद कर सकता है:
function add(x, y, z) {
return x + y + z;
}
const add1 = add.bind(null, 1);
const add1And2 = add1.bind(null, 2);
console.log(add1And2(3)); // आउटपुट: 6
घटना प्रबंधन
घटना हैंडलर में, this
अप्रत्याशित हो सकता है। bind()
सही संदर्भ सुनिश्चित करता है:
class Button {
constructor(text) {
this.text = text;
this.button = document.createElement('button');
this.button.textContent = text;
this.button.addEventListener('click', this.handleClick.bind(this));
document.body.appendChild(this.button);
}
handleClick() {
console.log(`Clicked: ${this.text}`);
}
}
new Button("Click Me!");
bind()
बनाम call()
और apply()
call()
और apply()
भी this
मान सेट करते हैं, लेकिन वे फ़ंक्शन को तुरंत निष्पादित करते हैं। bind()
एक नया फ़ंक्शन देता है, जिससे विलंबित निष्पादन की अनुमति मिलती है।
निष्कर्ष
bind()
स्वच्छ और अधिक रखरखाव योग्य जावास्क्रिप्ट लिखने के लिए एक आवश्यक उपकरण है। यह अतुल्यकालिक कोड, घटना हैंडलर और कार्यात्मक प्रोग्रामिंग तकनीकों के साथ काम करते समय विशेष रूप से उपयोगी है। bind()
में महारत हासिल करने से कोड की मजबूती और दक्षता में काफी सुधार होता है।