Function.prototype.apply.bind использует?
Я отлично знаю :
Function.prototype.bind.apply(f,arguments)
Объяснение. Используйте метод оригинала (если существует) bind
над f
с помощью arguments
(который будет использовать его первый элемент в контексте this
)
Этот код может использоваться (например) для создания новых функций с помощью функции-конструктора с аргументами
Пример:
function newCall(Cls) {
return new (Function.prototype.bind.apply(Cls, arguments));
}
Исполнение:
var s = newCall(Something, a, b, c);
Но Я столкнулся с этим: Function.prototype.apply.bind(f,arguments)
//word swap
Вопрос:
Как трудно понять его значение - в каких случаях/сценариях я буду использовать этот код?
Ответы
Ответ 1
Это используется, чтобы исправить первый параметр .apply
.
Например, когда вы получаете максимальное значение из массива, вы делаете:
var max_value = Math.max.apply(null, [1,2,3]);
Но вы хотите, чтобы первый параметр был зафиксирован на null
, поэтому вы могли бы создать новую функцию:
var max = Function.prototype.apply.bind(Math.max, null);
то вы можете просто сделать:
var max_value = max([1,2,3]);