JavaScript Academy · Lektion

Fallgropar vid metodextraktion och partiell tillämpning

Korrigera metodextraktion med call/apply/bind och lär dig små mönster för partiell tillämpning med bind och omslutande pilar.

Lektion 2 av 38 steg

Fallgropar vid metodextraktion och partiell tillämpning är en gratis lektion i JavaScript Academy på CoddyKit. Detta är lektion 2 av 3. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för JavaScript Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i JavaScript Academy innehåller totalt 3 lektioner.

Överblick

Mål: Behåll this stabilt efter extrahering och förfyll argument.

  • call(thisArg, a, b)
  • apply(thisArg, [a, b])
  • bind(thisArg, a) → returnerar en ny funktion
  • Partiell applicering med bind eller en liten pilfunktion
Fallgropar vid metodextraktion och partiell tillämpning — illustration 1

Fallgrop vid extrahering

Det fungerar att anropa som obj.method(), men när funktionen extraheras förloras objektet och this slutar fungera.

// Extraction loses this
const user = {
  name: "Ayla",
  label: function (prefix) {
    return prefix + ":" + this.name;
  }
};

console.log("method call:", user.label("Hi")); // "Hi:Ayla"

// Extract
const f = user.label;
console.log("extracted:", f("Hi")); // this is missing -> "Hi:undefined" (in strict mode this is undefined)
Fallgropar vid metodextraktion och partiell tillämpning — illustration 2

call/apply för engångsanrop

call och apply låter Er ange this för ett enda anrop.

// Fix by passing this explicitly using call/apply
console.log("call :", f.call(user, "Hi"));   // "Hi:Ayla"
console.log("apply:", f.apply(user, ["Yo"])); // "Yo:Ayla"
Fallgropar vid metodextraktion och partiell tillämpning — illustration 3

bind för återanvändning

bind skapar en funktion som kommer ihåg this. Anropa den många gånger utan att binda om den.

// bind returns a new function with this fixed
const bound = f.bind(user);
console.log("bound once:", bound("Hey")); // "Hey:Ayla"
console.log("bound again:", bound("Yo")); // "Yo:Ayla"
Fallgropar vid metodextraktion och partiell tillämpning — illustration 4

Partiell applicering (enkelt)

Använd bind för att förfylla inledande argument, eller en liten pilfunktionsomslutning för att låsa värden och this.

// Partial application: pre-fill arguments
function add(a, b, c) { return a + b + c; }

// Using bind: pre-fill a=10
const add10 = add.bind(null, 10);
console.log("add10(1,2):", add10(1, 2)); // 13

// Using an arrow wrapper: pre-fill prefix
const labelHi = function (obj) {
  return function () { return obj.label("Hi"); };
}(user);

console.log("arrow partial:", labelHi()); // "Hi:Ayla"
Fallgropar vid metodextraktion och partiell tillämpning — illustration 5

Praktiska mönster

Tips:

  • Extraherade metoder: använd bind en gång och återanvänd resultatet.
  • Engångsanrop: använd call/apply.
  • Behöver Ni förfylla argument? Använd bind eller en liten pilfunktionsomslutning.
  • Håll hjälp funktioner små och ge dem tydliga namn.
Fallgropar vid metodextraktion och partiell tillämpning — illustration 6

Quiz: bind jämfört med call/apply

Snabb kontroll: Bevara this och förfyll argument.

Fallgropar vid metodextraktion och partiell tillämpning — illustration 7

Sammanfattning

Sammanfattning: Vid extrahering förloras this. Använd call/apply för engångsanrop och bind för att låsa this och återanvända funktionen. För partiell applicering använder Ni bind eller en liten pilfunktion för att förfylla värden.

Fallgropar vid metodextraktion och partiell tillämpning — illustration 8
Gratis att börja

Lär dig JavaScript med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
59
Lektioner
200

Vanliga frågor

Är lektionen ”Fallgropar vid metodextraktion och partiell tillämpning” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen JavaScript Academy, inklusive ”Fallgropar vid metodextraktion och partiell tillämpning”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i JavaScript Academy innehåller totalt 3 lektioner.

Vad lär jag mig i ”Fallgropar vid metodextraktion och partiell tillämpning”?

Korrigera metodextraktion med call/apply/bind och lär dig små mönster för partiell tillämpning med bind och omslutande pilar. Ni övar på JavaScript Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig JavaScript Academy?

Du behöver inga förkunskaper. Utbildningen i JavaScript Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 3.

Hur lång tid tar lektionen ”Fallgropar vid metodextraktion och partiell tillämpning”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här JavaScript Academy-lektionen?

Ja. Varje JavaScript Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Lexikalt och dynamiskt this, pilar på nytt
  2. Fallgropar vid metodextraktion och partiell tillämpning
  3. Funktionella alternativ — skicka kontext, closures och små hjälpfunktioner
← Tillbaka till JavaScript Academy