В одном из недавних интервью по JavaScript меня спросили о java "> перегрузка против переопределения . Я знаю, что это концепция в Java. Но есть ли что-то похожее в JavaScript, и если да, то какими будут примеры кода? Насколько я понимаю, перегрузка не является распространенным явлением в JavaScript. Зачем вам нужно использовать перегрузку в JS?

OverRiding немного более понятен для меня - пример перебега может быть в подклассах, где вы наследуете от суперкласса, но при использовании некоторых методов / свойств для создания уникальных для подкласса.

7
devdropper87 17 Дек 2015 в 17:27

4 ответа

Лучший ответ

JavaScript не поддерживает перегрузку.

JavaScript поддерживает переопределение, поэтому, если вы определяете две функции с одинаковым именем, последняя определенная переопределит ранее определенную версию, и каждый раз, когда будет сделан вызов функции, будет выполняться последняя определенная версия.

Подробнее читайте здесь http://blog.mastykarz.nl/overloading-functions-javascript/

6
Rajveer gangwar 17 Дек 2015 в 14:30

Нет необходимости в традиционной концепции перегрузки в javascript из-за ее динамической природы. В более традиционных языках программирования, таких как Java, вы можете определить метод несколько раз с разными сигнатурами, и язык будет правильно использовать метод, который вы хотите вызвать, просто используя сигнатуру: это называется перегрузкой методов. С другой стороны, переопределение - это возможность переопределить метод родительского класса в дочернем классе. Для перегрузки в javascript принято использовать последний параметр, который называется options. Например

function yourFunction(firstParam, secondParam, options) {};

Параметры - это просто объект javascript, в котором есть реквизиты, которые вы хотите передать. Затем вы можете использовать так называемый шаблон «параметры» для проверки реквизита. Переопределить это сложнее в чистом javascript из-за прототипной природы языка: когда вы «расширяете» базовый объект новым, вы можете использовать функцию .call () объекта конструктора, передавая его, чтобы украсить вновь созданный объект с родительским реквизитом.

3
Maksim 17 Дек 2015 в 14:39

Хотя JavaScript не поддерживает перегрузку в традиционном смысле,

Больше чем требуемые аргументы могут быть переданы в любое время методу JavaScript и доступны через переменную arguments. Это функционально похоже.

1
Andrue Anderson 17 Дек 2015 в 14:35

Вот хороший пример перегрузки функции «поддельного» JavaScript здесь: https://stackoverflow.com/a/457589/2754135

Вы в основном используете параметр в своей функции, который принимает объект, этот объект содержит любое количество параметров, которые вы хотите.

Это на самом деле не перегрузка, очевидно, потому что это невозможно в JavaScript.

3
Community 23 Май 2017 в 12:32