Точно так же, как некоторая вспомогательная информация для хора «сначала поставьте стог сена», в данном случае в основном для JavaScript : когда вы думаете о том, какой параметр является «самым важным», или какой«стог сена», он (может) помогает подумать о том, какой параметр, вероятно, будет отличаться между вызовами, а какой может измениться.В вашем примере, «игла», вероятно, довольно изменчива от вызова к вызову, в то время как «стог сена» может всегда или почти всегда быть одним и тем же.
Ну, если это так, то это обычноиспользовать такую утилиту только для одного конкретного объекта - метод «bind ()», доступный в новых средах JavaScript (на прототипе Function) или добавленный библиотекой, такой как Prototype или Functional, может быть действительно полезным:
function whatever(haystack, needle) {
// ...
};
var myHaystack = new Haystack( /* ... */ );
var myHaystackWhatever = whatever.bind(null, myHaystack);
Теперь функцию «myHaystackWhwhat» можно использовать следующим образом:
var result = myHaystackWhatever(someNeedle);
Это может показаться тривиальным, но в функциональном языке, таком как JavaScript, возможность легко и надежно создавать новую функцию как вариантна существующем это очень удобно, сохраняя много путаницы при наборе текста и парсинг-скобках.
Дело в том, что такие средства, как «связывание», особенно в JavaScript, который имеет чисто основанную на порядке привязку значений вызовак формальным параметрам вы привязываете фиксированные значения слева направо.Таким образом, если ваш самый левый параметр, скорее всего, представляет собой миллиард разных вещей, то «bind ()» не слишком интересен.(Функциональная библиотека JavaScript имеет способ связывания других параметров, причем не только слева направо, но и довольно экзотично и странно и, на мой взгляд, в основном интересно в качестве примера кодирования.)