Simple partial function application.
The primary purpose of
Function#bind is to create a closure to preserve a function's context (the
this variable). Most implementations, including the one in ES 5, also allow partial function application.
The functions provided by
par also create closures, but they pass their own context along. This means
Function#call and method invocation syntax still behave as expected (with the context being set accordingly).
If you don't care about contexts (e.g. the function you want to wrap doesn't use
Function#bind can be used interchangeably.
There is no native equivalent of
Another important distinction is that unlike
par works in environments that don't support ECMAScript 5, such as legacy versions of Internet Explorer (versions 8 and lower) or Rhino (e.g. the version bundled with Sun JDK 1.6).
npm install par
git clone https://github.com/pluma/par.gitcd parnpm installmake && make dist
component install pluma/par
bower install par
Download the latest minified CommonJS release and add it to your project.
Download the latest minified AMD release and add it to your project.
Download the latest minified standalone release and add it to your project.
This makes the
par module available in the global namespace.
var par = require'par';return x / y;var divide4By = pardivideBy 4;console.logdivide4By10; // 0.4var divideBy4 = parrpartialdivideBy 4;console.logdivideBy410; // 2.5
var par = require'par';// This assumes a modern browser or recent version of IEconsole.logapplyconsole arguments;say'I love Internet Explorer!'; // "I love Internet Explorer!"var sarcastic = parrpartialparsay '[sarcasm]' '[/sarcasm]';sarcastic'I love Internet Explorer!'; // "[sarcasm] I love Internet Explorer! [/sarcasm]"
Creates a partially applied function that will append the initial arguments to the left-hand side of the argument list.
Creates a partially applied function that will append the initial arguments to the right-hand side of the argument list.
This is free and unencumbered public domain software. For more information, see http://unlicense.org/ or the accompanying UNLICENSE file.