Partial application in JavaScript with 'bind'
The Function prototype's bind method is most commonly used to set the implicit argument of this in a function, e.g.
var myObj = {
foo: "bar"
};
var getFoo = function() {
return this.foo;
};
getFoo(); // returns undefined
var boundGetFoo = getFoo.bind(myObj);
boundGetFoo(); // returns "bar"
It can also be used to set a function's explicit arguments, while allowing further arguments to be provided, e.g.
var logHello = console.log.bind(null, "Hello");
logHello("Mark"); // logs ["Hello", "Mark"]
A great example of this is in Node.js, resolving the path to a file from the root of our Node module when inside a subdirectory.
var resolve = require("path").resolve,
asset = resolve.bind(null, __dirname, "..");
asset("package.json");
// returns "/path/to/modules/package.json"
asset("nested/file.js");
// returns "/path/to/modules/nested/file.js"Written by Mark Dalgleish
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Nodejs
Authors
Did you know?
JavaScript on a page runs with the privileges of that origin. One altered library, tag manager, or snippet can read inputs, change what people see, and call your APIs as the user.
Security insights from Cside
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#