Определение функции JS может указать имя формального параметра. Более или менее мы думаем, что JS может, по крайней мере, метод поддержки, перегружаясь различными параметрами. К сожалению, это просто иллюзия. Все параметры JS передаются в аргументах. Этот параметр похож на массив. Когда вызывается функция, все фактические параметры хранятся в этой структуре данных. Формальные параметры, указанные при определении функции, фактически определяем метод быстрого доступа для данных в этой структуре данных. Другими словами, все функции JS поддерживают бесконечные параметры, а тип данных - слабый тип, поэтому между функциями JS действительно нет различий методов, кроме имен?
Всегда есть способы, мы можем использовать аргументы специального объекта в JavaScript для моделирования перегрузки функции. Используйте его, чтобы определить число или тип входящих параметров, чтобы отличить перегрузку.
1. Перезагрузить в соответствии с количеством параметров
JS для определения количества входящих параметров может быть оценена по атрибуту Arguments.Length;
Кода -копия выглядит следующим образом:
<script type = "text/javascript">
функция add () {
if (arguments.length == 1) {
оповещение (аргументы [0] + 10);
}
else if (arguments.length == 2) {
оповещение (аргументы [0] + аргументы [1]);
}
}
// Функциональный вызов
добавить (10);
добавить (10, 20);
</script>
2. Перезагрузить в соответствии с типом параметра
Есть 3 способа оценки типов переменных:
1. Используйте оператор TypeOF, чтобы судить тип переменной, а оператор TypeOF возвращает строку, соответствующую типу.
2. Используйте оператор EncementOF, чтобы судить тип переменной, а оператор EncementOF возвращает true/false.
3. Используйте атрибут конструктора, чтобы определить тип переменной, который возвращает ссылку на конструктор, используемый для построения переменной.
Таблица сравнения: видно, что использование TypeOF не может точно определить конкретный тип, поэтому мы используем конструктор для вынесения суждений.
TypeOfStringNumberObjectFunctionBooleAnObjectObject
ConstructorStringNumberObjectFunctionBooleAnarrayUser определить
Кода -копия выглядит следующим образом:
<script type = "text/javascript">
Функция add ()
{
if (arguments.length == 0) возврат 0;
var sum = 0;
for (var i = 0; i <arguments.length; i ++) {
if (аргументы [i] .constructor == number) {
// или изменить на: if (аргументы [i] exanceOf number)
// или изменить на: if (typeof (аргументы [i]) == "номер")
sum += аргументы [i];
}
}
вернуть сумму;
}
// Функциональный вызов
предупреждение (добавить (10));
предупреждение (добавить (10,20));
</script>
Вы поняли метод перегрузки функций JavaScript? Если у вас есть какие -либо вопросы, оставьте сообщение