Junior
Ի՞նչ է տարբերությունը դասական ֆունկցիայի և սլաքային ֆունկցիայի միջև JavaScript-ում։
sobes.tech AI
Պատասխան AI-ից
Հիմնական տարբերությունը այն է, թե ինչպես են նրանք աշխատում this-ի հետ:
Կլասիկ ֆունկցիան ունի իր this, որը որոշվում է նրա կանչման կոնտեքստով (ինչպես է նա կանչվել):
Ստրելային ֆունկցիան չունի իր this, այն լեքսիկորեն ժառանգում է this այն միջավայրից, որտեղ այն սահմանվել է:
Այլ տարբերություններ՝
argumentsօբյեկտը՝ Կլասիկ ֆունկցիաները ունենarguments-ի հասանելիություն, ստրելայինները՝ ոչ (բայց կարող եք օգտագործել rest-պարամետրեր):- Կառուցապատողները՝ Կլասիկ ֆունկցիաները կարող են օգտագործվել որպես կոնստրուկտորներ
new-ի հետ: Ստրելայինները՝ ոչ: prototypeհատկությունը՝ Կլասիկ ֆունկցիաները ունենprototype-ի հատկություն: Ստրելայինները՝ ոչ:
Օրինակ this-ի աշխատանքի:
// Կլասիկ ֆունկցիայի օրինակ
const obj = {
name: 'Օբյեկտ',
greet: function() {
console.log(this.name); // this-ը վերաբերում է obj-ին
}
};
obj.greet(); // Տպում է՝ Օբյեկտ
const greetFunc = obj.greet;
greetFunc(); // Տպում է՝ undefined (կամ Window բրաուզերում) - this-ը կորցնում է կոնտեքստը
// Ստրելային ֆունկցիայի օրինակ
const objArrow = {
name: 'Ստրելային օբյեկտ',
greet: () => {
console.log(this.name); // this-ը ժառանգում է արտաքին կոնտեքստից (այս դեպքում global կամ Window)
}
};
objArrow.greet(); // Տպում է՝ undefined (կամ Windows-ի անունը, եթե այն սահմանված է)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Տպում է՝ undefined (կամ Windows-ի անունը) - this-ը չի փոխվում