this એ ફંક્શન ક્યાં વ્યાખ્યાયિત થયું છે તેના પર નહીં, પણ તેને કેવી રીતે CALL કરવામાં આવે છે તેના પર નક્કી થાય છે. પાંચ નિયમો છે:
js
obj = {
: ,
() { .; },
};
obj.();
f = obj.;
();
f.(obj);
();
this એ ફંક્શન ક્યાં વ્યાખ્યાયિત થયું છે તેના પર નહીં, પણ તેને કેવી રીતે CALL કરવામાં આવે છે તેના પર નક્કી થાય છે. પાંચ નિયમો છે:
obj = {
: ,
() { .; },
};
obj.();
f = obj.;
();
f.(obj);
();
તીર ફંક્શનોમાં કોઈ પોતાનો this નથી — તેઓ તેને વ્યાખ્યા સમયે બંધ રેંજમાંથી લેતા હોય છે. આ કારણે તીર કૉલબેક્સ માટે પરફેક્ટ છે:
const obj = {
items: [1, 2],
logAll() {
// ✅ arrow inherits `this` from logAll → `this` is obj
this.items.forEach(i => console.log(this.items, i));
// ❌ a regular function here would have its own `this` (undefined) → crash
// this.items.forEach(function (i) { console.log(this.items); });
},
};
કૉલબેક તરીકે મેથડ પાસ કરવું તેની બંધન ગુમાવે છે, કારણ કે પછી તેને સાદા રીતે કૉલ કરવામાં આવે છે:
button.addEventListener("click", obj.getX); // ❌ `this` is the button
button.addEventListener("click", () => obj.getX()); // ✅ keeps obj
button.addEventListener("click", obj.getX.bind(obj)); // ✅ also fine
this ને ગીણવું JS માં સૌથી સામાન્ય બગ છે.
સુધાર સામાન્ય રીતે તીર ફંક્શન અથવા .bind() છે જેથી ઇચ્છિત this ને લૉક કરી શકાય.
વિગતવાર જવાબો સાથે IT ઇન્ટરવ્યૂ પ્રશ્નોની લાઇબ્રેરી — જુનિયરથી સિનિયર સુધી.
દાન કરો