JavaScript verfügt über eine Reihe integrierter Funktionen/Methoden, die auf verschiedene Datentypen angewendet werden können.
ebenso .split („“) kann auf eine Zeichenfolge angewendet werden, .nennen(), .apply() und .bind () sind Methoden von Funktionen.
Diese 3 Funktionen sind alle so konzipiert, dass sie den KONTEXT festlegen oder genauer gesagt, worauf sich „dies“ bezieht.
Meistens würden Sie „this“ immer definieren oder speziell in eine Funktion aufnehmen lassen., Nehmen wir zum Beispiel an, Sie haben ein Objekt:
var owen = { name: "Owen"}
Und Sie möchten dieses Objekt mit einer Funktion referenzieren:
function sayTo(person, first, second){ return first + " " + person.name + " " + second;}sayTo(owen, "Hi", "how are you?");
//returns "Hi Owen how are you?"
Wenn Sie nun die sayTo-Funktion auf
Nun, was wäre, wenn sayTo etwas anders definiert wäre?
Das erste Argument geht jedoch zur ersten Variablen, “ hi „zur zweiten Variablen und“ Wie geht es Ihnen?“geht nirgendwo hin, und this.name ist undefiniert, da dies NICHT das Objekt owen ist.
Die diese, wenn sie konsole.,protokollieren Sie es, gibt tatsächlich das globale Fensterobjekt zurück.
Mit .call()
.call () lässt die sayTo-Funktion arbeiten:
Die Notation lautet wie folgt:
functionName.call(value of this, arg1, arg2…)
.der Aufruf erzwingt im Wesentlichen den Wert in dieser Funktion .anruf wird angewendet auf. In diesem Fall rufen wir die sayTo-Funktion. .call (owen, …) zwingt das this von sayTo (), das Owen-Objekt zu sein. So this.name anwendbar ist.
„Hallo“ und “ wie geht es dir?“werden als zweites oder drittes Argument der sayTo-Funktion eingegeben (die 2 Argumente benötigt).
Mit .anwenden()
Mit .,apply() ist sehr ähnlich .nennen. Der einzige Unterschied ist das .call () nimmt arg1 und arg2 nacheinander.
Für die .apply() zu arbeiten, Argumente 1 und 2 müssen als Matrix eingegeben werden:
Das format ist wie folgt:
functionName.apply(value of this, )
Beachten Sie, dass arg1 und arg2 sind als Matrix eingegeben.
Mit .bind()
.bind(), im Gegensatz zu .apply() und .call (), gibt eine Funktion anstelle eines Werts zurück.
.bind () setzt den Wert davon und ändert die Funktion in eine neue Funktion, ruft die Funktion jedoch nicht auf.,
var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayToOwen = sayTo.bind(owen);
Im Wesentlichen wird sayToOwen als neue Funktion erstellt. Das ist techincally:
var sayToOwen = function(first, second){ return first + " " + owen.name + " " + second;}
Sie können dann sayToOwen als normale Funktion ausführen.
Sie können auch die Argumente von sayTo ()“ binden“:
var owen = {name: "Owen”}function sayTo(first, second){return first + " " + this.name + " " + second;}var sayHiToOwen = sayTo.bind(owen, "Hi");
Die Variable sayHiToOwen wird dann:
var SayHiToOwen = function(second){
return "Hi" + " " + owen.name + " " + second;}
Zusammenfassung