Страница документа Reflect.apply()
в веб-документах MDN указано:
В ES5 вы обычно используете метод Function.prototype.apply() для вызова функции с заданным значением this и аргументами, предоставленными в виде массива (или объекта, подобного массиву).
Function.prototype.apply.call(Math.floor, undefined, [1.75]);
С
Reflect.apply
это становится менее подробным и более понятным.
Я смущен. В ES5 я обычно использую (чтобы сохранить пример выше):
Math.floor.call(undefined, [1.75]);
Почему кто-то должен использовать вместо этого:
Function.prototype.apply.call(Math.floor, undefined, [1.75]);
P.S.: Мой вопрос не о Reflect.apply(myFunction, myObject, args);
apply
является настраиваемым и доступным для записи свойствомFunction.prototype
, также возможно переопределитьFunction.prototype.apply
, заставив его делать что-то другое, чем его цель по умолчанию. (То же самое относится и кReflect.apply
.) Итак, в этом отношении нет реальной разницы. 25.03.2019Function.prototype.apply
сломает много вещей. Возня сapply
в определенных функциях ломает толькоapply
в этих конкретных функциях. (А еще есть функция, предоставляемая хостом, которая теперь во многом историческая.) 25.03.2019