From 64c817ef81d4fe95dd58002d78ae9ec5e020db08 Mon Sep 17 00:00:00 2001 From: Angelos Chalaris Date: Wed, 24 Jan 2018 14:22:43 +0200 Subject: [PATCH] Add bindKey --- snippets/bindKey.md | 24 ++++++++++++++++++++++++ tag_database | 1 + 2 files changed, 25 insertions(+) create mode 100644 snippets/bindKey.md 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