Sobes.tech
Middle

Erzähle mir von den Möglichkeiten, den Kontext in JavaScript zu bewahren: bind, call, apply. Worin unterscheiden sie sich?

sobes.tech KI

Antwort von AI

In JavaScript sind Funktionen erstklassige Objekte und haben einen dynamischen Aufrufkontext (this). Die Methoden bind, call und apply ermöglichen die Steuerung dieses Kontexts:

  • call — ruft die Funktion sofort auf, wobei der Kontext und die Argumente separat übergeben werden.

    func.call(context, arg1, arg2);
    
  • apply — ähnlich wie call, aber die Argumente werden als Array übergeben.

    func.apply(context, [arg1, arg2]);
    
  • bind — ruft die Funktion nicht sofort auf, sondern gibt eine neue Funktion mit gebundenem Kontext und optional teilweise angewendeten Argumenten zurück.

    const boundFunc = func.bind(context, arg1);
    boundFunc(arg2);
    

Unterschiede:

  • call und apply rufen die Funktion sofort auf;
  • bind gibt eine neue Funktion zurück, die später aufgerufen werden kann;
  • apply ist nützlich, wenn die Argumente bereits in einem Array vorliegen;
  • bind ist nützlich, um den Kontext in Callbacks und Ereignis-Handlern zu bewahren.