Очень распространенный сценарий - при создании обработчиков событий.
Например, скажем, у вас есть документ с большим количеством ссылок, таких как:
<code> <a href="http://someurl.com/example">link</a>
Скажем, вы хотите, чтобы javascript прошел через все эти ссылки и отображал диалоговое окно "Вы сейчас: " при нажатии. В этом случае вы можете использовать такой код:
var links = document.getElementsByTagName("a"), len = links.length;
for (var n = 0; n < len; ++n) {
links[n].onclick = window.alert.bind(null, "You are now going to: " + links[n].innerText);
}
Function.prototype.bind()
(который я использую в window.alert ()) очень похож на partialApply()
, используемый в статье, на которую вы ссылаетесь.
Хотя этот пример сам по себе не очень практичен, он не так далек от более распространенной задачи: отображение окна подтверждения, когда пользователь нажимает ссылку, ведущую на сторонний веб-сайт.
Теперь вместо window.alert.bind(...)
мы могли бы использовать анонимную функцию:
links[n].onclick = (function(text) {
return function() { window.alert(text); };
})("You are now going to: " + link[n].innerText);
Однако это намного больше кода! Таким образом, большинство примеров карри можно «упростить», поэтому обычно они служат только в качестве ярлыка, хотя и очень удобного.