Как реализовать перегрузку метода в JS? Это включает три вопроса
1. Проблема вызова функций с тем же именем
2. Специальные параметры в функции
3. Как использовать аргументы для реализации перегрузки метода
1. Проблема вызова функций с тем же именем
Все знают, что если есть несколько функций с одним и тем же именем в JS, последний будет использоваться каждый раз при вызове. JS на самом деле не перегружен. То есть, если определены несколько функций с одинаковым именем, один параметр отличается. При звонке JS не заботится о количестве параметров, а только по заказу до и после
Например:
Функция Test1 (arg1) {alert ("Параметр 1:"+arg1); } function test1 (arg1, arg2, arg3) {alert ("Параметр 1:"+arg1+"Параметр 2:"+arg2+"Параметр 3:"+arg3); } // тест функции тестового кода () {test1 ("1")}Несмотря на то, что мы называем Test1 («1»), передавая параметр, фактическим вызовом является test1 (arg1, arg2, arg3), и мы не называем метод только с одним параметром, потому что мы передаем параметр.
2. Специальные параметры в функции
Если мы используем следующий код
Function Test1 (arg1, arg2, arg3) {alert ("Параметр 1:"+arg1+"Параметр 2:"+arg2+"Параметр 3:"+arg3); } function test1 (arg1) {alert ("Параметр 1:"+arg1); } // тест функции тестового кода () {test1 ("1", "2")}Мы знаем, что вызов всегда Test1 (arg1), что означает функцию только с одним параметром, но как пройти другие параметры?
Это требует использования специальных параметров в аргументах функции, которые содержат все параметры, передаваемые в функцию
function test1 () {var text = ""; for (var i = 0; i <arguments.length; i ++) {text+= "Параметры"+i+":"+arguments [i]; } alert (text); } // тест функции тестового кода () {test1 ("1"); test1 ("1", "2"); test1 ("1", "2", "3"); }После тестирования было обнаружено, что аргументы содержат все параметры, передаваемые к функции, и аргументы. Length варьируется в зависимости от количества фактических принятых параметров, и аргументы. Length представляет количество фактически переданных параметров функции.
3. Как реализовать перегрузку функций в JS?
После приведенных выше тестов было обнаружено, что перегрузка функций не может быть напрямую реализована в JS, но есть ли способ достичь аналогичных эффектов перегрузки?
Да, в основном используйте аргументы
Например:
function test1 () {var text = ""; if (arguments.length == 1) {// вызов метода одного параметра} else if (arguments.length == 2) {// вызов метода двух параметров} else {// Другие методы}}