Sobes.tech
Middle

Որտե՞ղից է գալիս ֆունկցիայի կոնտեքստը JavaScript-ում։

sobes.tech AI

Պատասխան AI-ից

Ճառագայթային ֆունկցիաները չունեն իրենց սեփական this-ը։ Նրանք "կապում" են this-ի արժեքը լեքսիկային շրջապատից, որտեղ նրանք հայտարարվել են։ Դա նրանց դարձնում է օգտակար բլոկբեքների համար մեթոդների ներսում կամ DOM իրադարձությունների հետ աշխատելիս։

const objWithArrow = {
  name: 'Arrow Obj',
  method() {
    const arrowFunc = () => {
      console.log(this.name); // `this`-ը վերցվում է `method`-ից (objWithArrow)
    };
    arrowFunc();
  }
};
objWithArrow.method(); // Arrow Obj

// Համեմատեք սովորական ֆունկցիայի հետ
const objWithRegular = {
  name: 'Regular Obj',
  method() {
    const regularFunc = function() {
      console.log(this); // `this`-ը կլինի window կամ undefined (կախված strict ռեժիմից) այս կոնտեքստում
    };
    regularFunc();
  }
};
objWithRegular.method(); // window (կամ undefined)

Կոնտեքստի սահմանումը՝ JavaScript-ի հիմնական առանձնահատկություններից է, և այս կանոնների ըմբռնումը կարևոր է ֆունկցիաներով և օբյեկտներով ճիշտ աշխատելու համար։