
Security News
require(esm) Backported to Node.js 20, Paving the Way for ESM-Only Packages
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
The call-bind npm package is a utility that allows you to use the ECMAScript 5 .call and .apply methods with a fixed this value. It is particularly useful when you want to ensure that the context (the this value) of a function call is bound to a specific object, regardless of how the function is invoked. This can be helpful in functional programming and when dealing with higher-order functions that might change the context of a function call.
callBind
Provides a way to use the native call method in a bound fashion, ensuring the this value is fixed when invoking a function.
const callBind = require('call-bind');
const call = callBind.call;
const unboundSlice = Array.prototype.slice;
const slice = call(unboundSlice);
function example() {
const args = slice(arguments);
console.log(args);
}
example(1, 2, 3); // Logs: [1, 2, 3]
applyBind
Allows you to use the native apply method in a bound manner, similar to callBind but for functions that expect an array of arguments.
const callBind = require('call-bind');
const apply = callBind.apply;
const unboundForEach = Array.prototype.forEach;
const forEach = apply(unboundForEach);
function example(array, callback) {
forEach(array, callback);
}
example([1, 2, 3], function(element) { console.log(element); }); // Logs: 1, 2, 3
Implements the Function.prototype.bind method in an ECMAScript 5-compliant way. It is similar to call-bind in that it allows you to fix the this value for function calls, but it does so by returning a new function with the this value bound, rather than using the call or apply methods directly.
Robustly .call.bind()
a function.
npm install --save call-bind
const assert = require('assert');
const callBind = require('call-bind');
const callBound = require('call-bind/callBound');
function f(a, b) {
assert.equal(this, 1);
assert.equal(a, 2);
assert.equal(b, 3);
assert.equal(arguments.length, 2);
}
const fBound = callBind(f);
const slice = callBound('Array.prototype.slice');
delete Function.prototype.call;
delete Function.prototype.bind;
fBound(1, 2, 3);
assert.deepEqual(slice([1, 2, 3, 4], 1, -1), [2, 3]);
Clone the repo, npm install
, and run npm test
v1.0.8 - 2024-12-05
407fd5e
call-bind-apply-helpers
81018fb
set-function-length/env
0fc311d
77a0cad
@ljharb/eslint-config
, auto-changelog
, es-value-fixtures
, gopd
, object-inspect
, tape
a145d10
aud
with npm audit
30ca3dd
set-function-length
57c79a3
601cfa5
FAQs
Robustly `.call.bind()` a function
The npm package call-bind receives a total of 51,824,494 weekly downloads. As such, call-bind popularity was classified as popular.
We found that call-bind demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
require(esm) backported to Node.js 20, easing the transition to ESM-only packages and reducing complexity for developers as Node 18 nears end-of-life.
Security News
PyPI now supports iOS and Android wheels, making it easier for Python developers to distribute mobile packages.
Security News
Create React App is officially deprecated due to React 19 issues and lack of maintenance—developers should switch to Vite or other modern alternatives.