Junior
Kāda ir atšķirība starp klasisko funkciju un bultiņas funkciju JavaScript?
sobes.tech AI
Atbilde no AI
Galvenā atšķirība ir tā, kā viņi strādā ar this.
Klasiskā funkcija ir ar savu this, kas tiek noteikts tās izsaukšanas kontekstā (kā tā tika izsaukta).
Lēciskā funkcija nav ar savu this. Tā leksiski manto this no apkārtējās vides, kurā tā tika definēta.
Citas atšķirības:
argumentsobjekts: Klasiskās funkcijas piekļūstarguments, lēciskās — nē (bet var izmantot rest parametrus).- Konstruktoru funkcijas: Klasiskās funkcijas var tikt izmantotas kā konstruktoru ar
new. Lēciskās — nē. prototypeīpašība: Klasiskās funkcijas ir arprototype. Lēciskās — nē.
Piemērs ar this darbu:
// Ar klasiskās funkcijas piemēru
const obj = {
name: 'Objekts',
greet: function() {
console.log(this.name); // this atsaucas uz obj
}
};
obj.greet(); // Izvadīs: Objekts
const greetFunc = obj.greet;
greetFunc(); // Izvadīs: undefined (vai Window pārlūkprogrammā) - this zaudē kontekstu
// Ar lēciskās funkcijas piemēru
const objArrow = {
name: 'Lēciskā objekts',
greet: () => {
console.log(this.name); // this manto no ārējā konteksta (šajā gadījumā global vai Window)
}
};
objArrow.greet(); // Izvadīs: undefined (vai Window nosaukumu pārlūkprogrammā, ja tas ir definēts)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Izvadīs: undefined (vai Window nosaukumu) - this nemainās