В одном из недавних интервью по JavaScript меня спросили о java "> перегрузка против переопределения . Я знаю, что это концепция в Java. Но есть ли что-то похожее в JavaScript, и если да, то какими будут примеры кода? Насколько я понимаю, перегрузка не является распространенным явлением в JavaScript. Зачем вам нужно использовать перегрузку в JS?
OverRiding немного более понятен для меня - пример перебега может быть в подклассах, где вы наследуете от суперкласса, но при использовании некоторых методов / свойств для создания уникальных для подкласса.
4 ответа
JavaScript не поддерживает перегрузку.
JavaScript поддерживает переопределение, поэтому, если вы определяете две функции с одинаковым именем, последняя определенная переопределит ранее определенную версию, и каждый раз, когда будет сделан вызов функции, будет выполняться последняя определенная версия.
Подробнее читайте здесь http://blog.mastykarz.nl/overloading-functions-javascript/
Нет необходимости в традиционной концепции перегрузки в javascript из-за ее динамической природы. В более традиционных языках программирования, таких как Java, вы можете определить метод несколько раз с разными сигнатурами, и язык будет правильно использовать метод, который вы хотите вызвать, просто используя сигнатуру: это называется перегрузкой методов. С другой стороны, переопределение - это возможность переопределить метод родительского класса в дочернем классе. Для перегрузки в javascript принято использовать последний параметр, который называется options. Например
function yourFunction(firstParam, secondParam, options) {};
Параметры - это просто объект javascript, в котором есть реквизиты, которые вы хотите передать. Затем вы можете использовать так называемый шаблон «параметры» для проверки реквизита. Переопределить это сложнее в чистом javascript из-за прототипной природы языка: когда вы «расширяете» базовый объект новым, вы можете использовать функцию .call () объекта конструктора, передавая его, чтобы украсить вновь созданный объект с родительским реквизитом.
Хотя JavaScript не поддерживает перегрузку в традиционном смысле,
Больше чем требуемые аргументы могут быть переданы в любое время методу JavaScript и доступны через переменную arguments. Это функционально похоже.
Вот хороший пример перегрузки функции «поддельного» JavaScript здесь: https://stackoverflow.com/a/457589/2754135
Вы в основном используете параметр в своей функции, который принимает объект, этот объект содержит любое количество параметров, которые вы хотите.
Это на самом деле не перегрузка, очевидно, потому что это невозможно в JavaScript.
Похожие вопросы
Связанные вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.