Heim >Web-Frontend >js-Tutorial >So implementieren Sie Methodenüberladung in js objektorientierter Programmierung_Javascript-Kenntnisse
Wie implementiert man Methodenüberladung in js? Dabei geht es um drei Probleme
1. Problem beim Aufrufen einer Funktion mit demselben Namen
2. Spezielle Parameterargumente in der Funktion
3. So verwenden Sie Argumente, um eine Methodenüberladung zu implementieren
1. Problem beim Aufrufen einer Funktion mit demselben Namen
Wir alle wissen, dass, wenn es in js mehrere Funktionen mit demselben Namen gibt, jedes Mal nur die letzte verwendet wird. Tatsächlich ist js nicht überlastet, wenn es mehrere Funktionen mit demselben Namen gibt definiert, ein einzelner Die Parameter sind unterschiedlich. Beim Aufruf kümmert sich js nicht um die Anzahl der Parameter, sondern nur um die Reihenfolge
Zum Beispiel:
function test1(arg1) { alert("参数1:"+arg1); } function test1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } //测试代码 function test(){ test1("1") }
Obwohl wir test1("1") aufgerufen und einen Parameter übergeben haben, war der eigentliche Aufruf test1(arg1, arg2, arg3). Dies lag nicht daran, dass wir einen Parameter übergeben hatten und der Aufruf nur einen Parameter hatte.
2. Spezielle Parameter in den Funktionsargumenten
Wenn wir den folgenden Code verwenden
function test1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } function test1(arg1) { alert("参数1:"+arg1); } //测试代码 function test(){ test1("1","2") }
Wir wissen, dass der Aufruf immer test1(arg1) ist, eine Funktion mit nur einem Parameter, aber wie werden die anderen Parameter übergeben?
Dies erfordert die Verwendung spezieller Parameterargumente in den Funktionsargumenten, die alle an die Funktion übergebenen Parameter enthalten.
function test1() { var text=""; for(var i=0;i<arguments.length;i++){ text+="参数"+i+":"+arguments[i]; } alert(text); } //测试代码 function test(){ test1("1"); test1("1","2"); test1("1","2","3"); }
Nach dem Test wurde festgestellt, dass arguments alle an die Funktion übergebenen Parameter enthält und arguments.length entsprechend der tatsächlichen Anzahl der übergebenen Parameter variiert. arguments.length stellt die tatsächliche Anzahl der an die Funktion übergebenen Parameter dar.
3. Wie implementiert man Funktionsüberladung in js?
Nach den obigen Tests haben wir festgestellt, dass Funktionsüberladung nicht direkt in js implementiert werden kann. Gibt es jedoch eine Möglichkeit, einen ähnlichen Überladungseffekt zu erzielen?
Ja, die Hauptsache ist, Argumente zu verwenden
Zum Beispiel:
function test1() { var text=""; if(arguments.length==1) { //调用一个参数的方法 } else if(arguments.length==2) { //调用两个参数的方法 } else { //其他的方法 } }