Ի՞նչ է կոնտեքստը JavaScript-ում։
sobes.tech AI
Պատասխան AI-ից
Կոնտեքստը (this) JavaScript-ում՝ դա հղում է օբյեկտին, որի շրջանակներում կատարվում է ընթացիկ ֆունկցիան։ Նրա արժեքը որոշվում է այն կերպով, ինչպես է ֆունկցիան կանչվել, ոչ թե այն վայրով, որտեղ այն սահմանվել է։
Հիմնական եղանակները կոնտեքստը որոշելու համար՝
-
Գլոբալ կոնտեքստ: Ֆունկցիաների դուրս, ոչ խիստ ռեժիմում
thisհղում է գլոբալ օբյեկտին (windowբրաուզերում,globalNode.js-ում): Խիստ ռեժիմումthisհավասար էundefined:// Ներքին ռեժիմ (բրաուզերում) console.log(this === window); // true // Խիստ ռեժիմ "use strict"; console.log(this === undefined); // true -
Օբյեկտի մեթոդ: Եթե ֆունկցիան կանչվում է որպես օբյեկտի մեթոդ (
obj.method()), ապաthis-ը ֆունկցիայի ներսում հղում է այդ օբյեկտին (obj):const user = { name: "John", greet: function() { console.log("Hello, " + this.name); } }; user.greet(); // Արտածում՝ Hello, John (this հղում է `user`-ին) -
Ֆունկցիայի կանչ (
call,apply,bind):callևapplyմեթոդները ֆունկցիան կանչում են հստակ կոնտեքստով։bind-ը ստեղծում է նոր ֆունկցիա՝ հաստատված կոնտեքստով։function sayName(greeting) { console.log(greeting + ", " + this.name); } const person = { name: "Peter" }; sayName.call(person, "Hi"); // Արտածում՝ Hi, Peter (this = person) sayName.apply(person, ["Hello"]); // Արտածում՝ Hello, Peter (this = person) const boundSayName = sayName.bind(person, "Hey"); boundSayName(); // Արտածում՝ Hey, Peter (this = person) -
Կոնստրուկտոր (
new): Երբ ֆունկցիան կանչվում էnewօպերատորով, ստեղծվում է նոր դատարկ օբյեկտ, ևthis-ը ֆունկցիայի ներսում հղում է այդ նոր օբյեկտին:function Person(name) { this.name = name; } const john = new Person("John"); console.log(john.name); // Արտածում՝ John (this-ը `Person`-ի ներսում հղում է `john`-ին) -
Աղեղային ֆունկցիաներ: Աղեղային ֆունկցիաների սեփական կոնտեքստ չկա։
this-ը ներսում վերցվում է արտաքին (լեքսիկական) տեսադաշտից, որտեղ ֆունկցիան ստեղծվել է:const user = { name: "Alice", greet: function() { const innerGreet = () => { console.log("Hello, " + this.name); // this-ը վերցվում է `greet`-ից (հղում է `user`-ին) }; innerGreet(); } }; user.greet(); // Արտածում՝ Hello, Alice
Հասկանալը, թե ինչպես է որոշվում this, կարևոր է ճիշտ աշխատելու համար օբյեկտների, մեթոդների և իրադարձությունների handler-ների հետ JavaScript-ում։