Bagaimana untuk melaksanakan lebihan kaedah dalam js? Ini melibatkan tiga isu
1. Masalah dengan fungsi memanggil dengan nama yang sama
2. Argumen parameter khas dalam fungsi
3. Cara menggunakan hujah untuk melaksanakan lebihan kaedah
1. Masalah dengan fungsi panggilan dengan nama yang sama
Kita semua tahu bahawa jika terdapat berbilang fungsi dengan nama yang sama dalam js, hanya yang terakhir akan digunakan setiap kali, sebenarnya, js tidak dibebankan, jika berbilang fungsi dengan nama yang sama ditakrifkan, satu Parameter berbeza Apabila memanggil, js tidak mengambil berat tentang bilangan parameter, tetapi hanya tertib
Contohnya:
function test1(arg1) { alert("参数1:"+arg1); } function test1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } //测试代码 function test(){ test1("1") }
Walaupun kami memanggil test1("1") dan lulus satu parameter, panggilan sebenar ialah test1(arg1, arg2, arg3).
2. Parameter khas dalam argumen fungsi
Jika kita menggunakan kod berikut
function test1(arg1,arg2,arg3) { alert("参数1:"+arg1+"参数2:"+arg2+"参数3:"+arg3); } function test1(arg1) { alert("参数1:"+arg1); } //测试代码 function test(){ test1("1","2") }
Kami tahu bahawa panggilan sentiasa test1(arg1), yang merupakan fungsi dengan hanya satu parameter, tetapi bagaimana untuk mendapatkan parameter lain diluluskan?
Ini memerlukan penggunaan argumen parameter khas dalam fungsi mengandungi semua parameter yang dihantar ke fungsi
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"); }
Selepas ujian, didapati bahawa argumen mengandungi semua parameter yang dihantar ke fungsi dan argumen. panjang berbeza-beza mengikut bilangan sebenar parameter yang diluluskan. panjang mewakili bilangan parameter sebenar yang dihantar kepada fungsi.
3. Bagaimana untuk melaksanakan lebihan fungsi dalam js?
Selepas ujian di atas, kami mendapati bahawa lebihan fungsi tidak boleh dilaksanakan secara langsung dalam js, tetapi adakah terdapat cara untuk mencapai kesan lebihan yang serupa?
Ya, perkara utama ialah menggunakan hujah
Contohnya:
function test1() { var text=""; if(arguments.length==1) { //调用一个参数的方法 } else if(arguments.length==2) { //调用两个参数的方法 } else { //其他的方法 } }