Ich versuche Funktionen mit derselben Signatur aufzurufen.
Beispiel: Es gibt zwei Funktionen mit demselben Namen:
%Vor%Wenn ich Funktion auf klicke Ereignis des Links
%Vor%Wenn ich auf den obigen Link klicke, ruft er die Funktion OpenBox (obj1, obj2, obj3, obj4, obj5) {}
aufEs sollte Aufruffunktion sein OpenBox (obj1, obj2) {} Stattdessen.
Was läuft falsch in Funktionen?
Javascript kann keine doppelte Funktion im selben Umfang definieren. Überprüfen Sie arguments.length
auf 2 oder 5.
@abshik,
Es gibt nichts Vergleichbares wie c # oder java. Javascript verhält sich so
%Vor%Wenn Sie diese Funktion aufrufen, können Sie die folgenden Möglichkeiten aufrufen:
%Vor%Aber Reihenfolge ist wichtig, also können Sie die Funktion auf die oben genannten Arten ausführen.
Das Problem ist, dass Sie versuchen, eine Funktion zu überlasten, die aber von Javascript nicht unterstützt wird. Ich denke, deine beste Option ist es stattdessen Polymorphismus zu verwenden. Sehen Sie diesen Artikel für weitere Details: Ссылка
Sie können Funktionen in JavaScript nicht überladen. Stattdessen wird die zuletzt definierte Version der Funktion verwendet, weshalb in Ihrem Fall die Version mit 5 Parametern aufgerufen wird (die letzten 3 sind nur undefined
).
Dafür gibt es mehrere Möglichkeiten, eine, die in Mikolas Antwort gezeigt wird. Eine Alternative besteht darin, ein Objekt zu übergeben und dann den Inhalt dieses Objekts in der Funktion zu überprüfen (siehe diese Frage ):
%Vor% Eine weitere Möglichkeit ist, arguments.length
:
Sobald eine Funktion in Ecmascript definiert ist, ist dieser Name gesperrt. Sie können jedoch eine beliebige Anzahl von Parametern an diese Funktion übergeben, so dass Sie den Rest der Arbeit auf der Innenseite erledigen.
%Vor% Interessanter Hinweis: Sie können zusätzliche Parameter übergeben, die nicht in der Funktionsdeklaration enthalten sind. Mach ein console.log
von arguments
und du wirst alles darin sehen. arguments
ist ein object
, auf das wie / typecasted auf ein array
zugegriffen werden kann.
Im Polymorphismus können Sie eine andere Unterschriftsmethode verwenden, in Javascript können wir Polymorphismus simulieren, indem wir den Typ des Funktionsparameters überprüfen und eine bestimmte Aufgabe ausführen.
%Vor%Überprüfen Sie dieses Beispiel in JSFIDDLE
Tags und Links javascript oop javascript-events