@dlmanning/bind

Bind and partially apply with memoization

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@dlmanning/bind
311.0.08 years ago8 years agoMinified + gzip package size for @dlmanning/bind in KB

Readme

Functions

bind(self, fn)BoundFunction

bind a function to the provided context


BoundFunction : function

Kind: global interface
Properties
| Name | Type | | --- | --- | | partial | function |

boundFunction.partial ⇒ BoundFunction

Perform a partial application of the provided parameters. The returned function is memoized for a given set of parameters, so that repeated applications will always return the same function object.
Kind: instance property of BoundFunction
Returns: BoundFunction - another BoundFunction with the provided params applied
| Param | Type | Description | | --- | --- | --- | | ...params | \* | zero or more items to partially apply |
Example
const applied = boundMethod.partial('Hello', 'World')
// applied is a BoundFunction which will always be called with "Hello" and
// "World" as its first two params

bind(self, fn) ⇒ BoundFunction

bind a function to the provided context
Kind: global function
Returns: BoundFunction - a bound function
| Param | Type | Description | | --- | --- | --- | | self | Object | context to which the function will be bound | | fn | function | function to be bound |
Example
var boundMethod = bind(this, this.aMethod)
boundMethod() // boundMethod is bound to this

bind.all(self, methods) ⇒ Object.<string, BoundFunction>

bind a collection of functions to the provided context.
Kind: static method of bind
| Param | Type | Description | | --- | --- | --- | | self | Object | context to which the function will be bound | | methods | Array.<string> | Object.<string, function()> | If an array is given, it must be an array of strings whose names are methods on the provided context object. If an object is provided, the returned object will key the bound functions according to those provided. |
Example
// assumes hear, see and speak are methods on this
bind.all(this, ['hear', 'see', 'speak'])
// or you can pass an object with function values, which will be bound to this
bind.all(this, { hear: function1, see: function2, speak: function3 })