Определение функции 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 не может точно определить конкретный тип, поэтому мы используем конструктор для вынесения суждений.
тип | нить | число | объект | функция | логический | объект | объект |
конструктор | Нить | Число | Объект | Функция | Логический | Множество | Пользователь определяет |
Кода -копия выглядит следующим образом:
<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>