Junior
Ի՞նչ է 'this' բանալի բառը։
sobes.tech AI
Պատասխան AI-ից
this բառը JavaScript-ում հիմնական բառ է, որը հղում է այն օբյեկտին, որի մեջ կատարվում է ընթացիկ կոդը: Նրա արժեքը որոշվում է ֆունկցիայի կանչման եղանակով:
this-ի հիմնական որոշման եղանակները:
- Գլոբալ կոնտեքստ: Ֆունկցիայի դուրս,
thisհղում է գլոբալ օբյեկտին (windowբրաուզերում,globalNode.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 կոդ գրելիս։