Ist es möglich, eine Javascript-Funktion mit Parametern als Parameter zu übergeben?
Beispiel:
$(edit_link).click( changeViewMode( myvar ) );
javascript
Lucia
quelle
quelle
Antworten:
Verwenden Sie einen "Verschluss":
Dadurch wird ein anonymer temporärer Funktions-Wrapper erstellt, der den Parameter kennt und an die eigentliche Callback-Implementierung übergibt.
quelle
this.myFunction = this.myFunction.bind(this)
in Ihrerconstructor
Methode verwenden. Wie Sie bereits sagten, ist es jedoch nicht vermeidbar, wenn Sie für jede Zeile unterschiedliche Kontexte übergeben müssen, z. B. alle unterschiedlichen Zeilen, auf die Sie klicken, um die Detailseite dieser Zeile zu öffnen.Verwenden
Function.prototype.bind()
. MDN zitieren:Es wird von allen gängigen Browsern unterstützt, einschließlich IE9 +.
Ihr Code sollte folgendermaßen aussehen:
Randnotiz: Ich gehe davon aus, dass Sie sich im globalen Kontext befinden, dh
this
Variable istwindow
; andernfallsthis
anstelle von verwendennull
.quelle
$.ajax(url).done(handler.bind(this, var1, var2));
Nein, aber Sie können einen ohne Parameter übergeben und dies tun:
Wenn Sie also eine anonyme Funktion ohne Parameter übergeben, ruft diese Funktion Ihre parametrisierte Funktion mit der Variablen im Abschluss auf
quelle
Ja genau so:
quelle
Oder wenn Sie es6 verwenden, sollten Sie in der Lage sein, eine Pfeilfunktion zu verwenden
quelle
Du kannst das
und dann
Wenn Ihr Rückruf eine flexiblere Logik enthält, können Sie ein Objekt übergeben.
Demo
quelle
Dies ist ein Beispiel nach dem Ansatz von Ferdinand Beyer:
In diesem Beispiel wird der "Parameterwert" mithilfe eines Funktionsumbruchs von Funktion1 zu Funktion3 über Funktion2 übergeben.
quelle