diff --git a/snippets/bindKey.md b/snippets/bindKey.md new file mode 100644 index 000000000..2ff80f861 --- /dev/null +++ b/snippets/bindKey.md @@ -0,0 +1,24 @@ +### bindKey + +Creates a function that invokes the method at a given key of an object, optionally adding any additional supplied parameters to the beginning of the arguments. + +Return a `function` that uses `Function.apply()` to bind `context[fn]` to `context`. +Use `Array.concat()` to prepend any additional supplied parameters to the arguments. + +```js +const bindKey = (context, fn, ...args) => + function() { + return context[fn].apply(context, args.concat(...arguments)); + }; +``` + +```js +const freddy = { + user: 'fred', + greet: function(greeting, punctuation) { + return greeting + ' ' + this.user + punctuation; + }, +}; +const freddyBound = bindKey(freddy, 'greet'); +console.log(freddyBound('hi', '!')); // 'hi fred!' +``` diff --git a/tag_database b/tag_database index fd216c710..46617cd16 100644 --- a/tag_database +++ b/tag_database @@ -5,6 +5,7 @@ atob:node,string,utility average:math,array averageBy:math,array,function bind:function,object +bindKey:function,object bottomVisible:browser btoa:node,string,utility byteSize:string