@dlmanning/bind

Bind and partially apply with memoization

Usage no npm install needed!

<script type="module">
  import dlmanningBind from 'https://cdn.skypack.dev/@dlmanning/bind';
</script>

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 })