Sobes.tech
Junior

Ի՞նչ է 'this' բանալի բառը։

sobes.tech AI

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

this բառը JavaScript-ում հիմնական բառ է, որը հղում է այն օբյեկտին, որի մեջ կատարվում է ընթացիկ կոդը: Նրա արժեքը որոշվում է ֆունկցիայի կանչման եղանակով:

this-ի հիմնական որոշման եղանակները:

  • Գլոբալ կոնտեքստ: Ֆունկցիայի դուրս, this հղում է գլոբալ օբյեկտին (window բրաուզերում, global Node.js-ում):
  • Նորմալ ֆունկցիայի կանչում: Անձեռնարկային ռեժիմում (strict mode) this-ը նույնպես հղում է գլոբալ օբյեկտին (կամ undefined, եթե ֆունկցիան կանչվում է որպես օբյեկտի մեթոդ, բայց այդ օբյեկտը null կամ undefined է): Նորմալ ռեժիմում, this-ը հավասար է undefined:
  • Օբյեկտի մեթոդ: Եթե ֆունկցիան կանչվում է որպես օբյեկտի մեթոդ (. օպերատորով), this-ը հղում է այդ օբյեկտին:
  • Կոնստրուկտոր: Երբ օգտագործվում է new օպերատորը, this-ը հղում է նոր ստեղծվող օբյեկտին:
  • call(), apply(), bind() մեթոդներ: Այս մեթոդները թույլ են տալիս բացահայտորեն սահմանել this-ի արժեքը ֆունկցիայի կանչի ժամանակ:
  • Աղեղային ֆունկցիաներ: Աղեղային ֆունկցիաները չունեն սեփական this, և this-ը ժառանգվում է շրջակա տեսադաշտից, որտեղ այն սահմանված է:

Օրինակներ:

// Գլոբալ կոնտեքստ
console.log(this === window); // true (բրաուզերում)

// Նորմալ ֆունկցիայի կանչում
function myFunction() {
  console.log(this);
}
myFunction(); // window (նորմալ ռեժիմում)

// Օբյեկտի մեթոդ
const myObject = {
  myMethod: function() {
    console.log(this);
  }
};
myObject.myMethod(); // myObject

// Կոնստրուկտոր
function MyConstructor() {
  this.value = 10;
  console.log(this);
}
const instance = new MyConstructor(); // նոր օբյեկտ

// `call()`, `apply()`, `bind()`
function greet(name) {
  console.log("Hello, " + name + "! My name is " + this.name);
}
const person = { name: "Alice" };
greet.call(person, "Bob"); // Hello, Bob! My name is Alice
greet.apply(person, ["Bob"]); // Hello, Bob! My name is Alice
const boundGreet = greet.bind(person);
boundGreet("Bob"); // Hello, Bob! My name is Alice

// Աղեղային ֆունկցիա
const arrowFunction = () => {
  console.log(this);
};
arrowFunction(); // window (եթե սահմանված է գլոբալ կոնտեքստում)

Հասկանալը, թե ինչպես է this-ը որոշվում տարբեր կոնտեքստերում, կարևոր է ճիշտ JavaScript կոդ գրելիս։