Ինչպես կարելի է փոխել օբյեկտի կոնտեքստը JavaScript-ում?
sobes.tech AI
Պատասխան AI-ից
Կան մի քանի հիմնական եղանակներ this կոնտեքստը փոփոխելու համար JavaScript-ում:
-
call(): Կատարում է ֆունկցիան նշված կոնտեքստով և փոխանցված արգումենտներով, որոնք փոխանցվում են առանձին:// `call()` օրինակ const obj = { արժեք: 42 }; function ցույցտվե՚րԱրժեք() { console.log(this.արժեք); } ցույցտվե՚րԱրժեք.call(obj); // Տպում է 42 -
apply(): Կատարում է ֆունկցիան նշված կոնտեքստով և փոխանցված արգումենտներով, որոնք փոխանցվում են որպես զանգված կամ псևդո-զանգված:// `apply()` օրինակ const obj = { արժեք: 100 }; function գումարել(a, b) { console.log(this.արժեք + a + b); } գումարել.apply(obj, [5, 10]); // Տպում է 115 -
bind(): Վերադարձնում է նոր ֆունկցիա, որի կոնտեքստը հաստատված է նշված օբյեկտի վրա։ Մարմինը չի կատարվում անմիջապես:// `bind()` օրինակ const obj = { արժեք: 200 }; function բարև() { console.log("Բարև from " + this.արժեք); } const ամրացվածԲարև = բարև.bind(obj); ամրացվածԲարև(); // Տպում է "Բարև from 200" -
Աղեղային ֆունկցիաներ (
=>): Չեն ունեն սեփականthisկոնտեքստ։ Դրանք ժառանգում են կոնտեքստը լեքսիկոնային շրջապատից, որտեղ դրանք սահմանվել են:// Աղեղային ֆունկցիայի օրինակ const obj = { արժեք: "օբյեկտ", ցուցադրելԱրժեքը: function() { const աղեղայինՖունկցիա = () => { console.log("Աղեղային ֆունկցիայից: " + this.արժեք); // this հղում է դեպի obj } աղեղայինՖունկցիա(); } }; obj.ցուցադրելԱրժեքը(); // Տպում է "Աղեղային ֆունկցիայից: օբյեկտ" -
Կոնկրետ փոխանցում որպես մեթոդի``obj.method()```-ի միջոցով: Երբ ֆունկցիան կանչվում է որպես օբյեկտի մեթոդ (
obj.method()),thisկոնտեքստը դառնում է ինքն օբյեկտը (obj):// Մոդել որպես մեթոդ const obj = { արժեք: "օբյեկտի մեթոդ", ցույցտվե՚րԱրժեք() { console.log(this.արժեք); } }; obj.ցույցտվե՚րԱրժեք(); // Տպում է "օբյեկտի մեթոդ" -
Կոնկրետ փոխանցում կոնստրուկտորով (
new): Երբ օգտագործվում էnewօպերատորը նոր օբյեկտի օրինակ ստեղծելու համար,thisկոնտեքստը ներսում կոնստրուկտորում հղվում է ստեղծվող օրինակին:// Կոնստրուկտորի օրինակ function MyObject(արժեք) { this.արժեք = արժեք; // this հղում է նոր օրինակին } const օրինակ = new MyObject("կոնստրուկտոր"); console.log(օրինակ.արժեք); // Տպում է "կոնստրուկտոր"
Այս եղանակները թույլ են տալիս կառավարել, թե ինչին է հղում this բանալի բառը ֆունկցիայի ներսում, ինչը կարևոր է օբյեկտների և մեթոդների ճիշտ աշխատանքի համար JavaScript-ում։