partial-apply
Call a function using an array of arguments while maintaining its original "this" context.
Last updated 11 years ago by balderdashy .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ npm install partial-apply 
SYNC missed versions from official npm registry.

partial-apply

Implements a context-free version of Function.prototype.apply in Node.js/JavaScript.

If someFn has unknown arguments, and we want to pass those arguments through to a wrapped function, say someOtherFn, we can use someOtherFn.apply() to call the wrapped function with someFn's arguments.

But in the process, we corrupt the "this" context of the wrapped function. In order to have it stay correctly defined, we have to pass in the context manually. This creates some nasty dependencies and hurts reusability in your code base.

_.partial() in lodash gets us a bit closer, but it does not support an array of arguments- just arguments passed in one after the other, like _.partial(fn,x0,x1,etc).

For example, if we expected someOtherFn in the example below to have its "this" value refer to, say, a Waterline model, it's actually quite annoying in vanilla JavaScript to pass down a dynamic array of arguments to a function AND maintain its original "this" context.

Anyway, this is why partial-apply was created.

Installation

$ npm install partial-apply

Usage

var partialApply = require('partial-apply');

function someFn( /* ... */ ) {
  return partialApply(someOtherFn, arguments);
}

Why?

This module is a temporary solution, until lodash has something similar in core that can be called as a single method. In the mean time, this is a hack to make our code more readable.

To get the latest status, see the lodash docs.

I'll update this repo with install/version info if something comparable is added to lodash core at some point.

License

MIT © Mike McNeil 2014

Current Tags

  • 0.1.0                                ...           latest (11 years ago)

1 Versions

  • 0.1.0                                ...           11 years ago
Maintainers (1)
Downloads
Total 3
Today 1
This Week 1
This Month 1
Last Day 0
Last Week 0
Last Month 0
Dependencies (1)
Dev Dependencies (1)
Dependents (2)

© 2010 - cnpmjs.org x YWFE | Home | YWFE