Files
30-seconds-of-code/snippets/bind-all.md
Angelos Chalaris 61200d90c4 Kebab file names
2023-04-27 21:58:35 +03:00

821 B

title, tags, cover, firstSeen, lastUpdated
title tags cover firstSeen lastUpdated
Bind all object methods object,function laptop-with-code 2018-01-26T14:14:53+02:00 2020-11-03T22:11:18+02:00

Binds methods of an object to the object itself, overwriting the existing method.

  • Use Array.prototype.forEach() to iterate over the given fns.
  • Return a function for each one, using Function.prototype.apply() to apply the given context (obj) to fn.
const bindAll = (obj, ...fns) =>
  fns.forEach(
    fn => (
      (f = obj[fn]),
      (obj[fn] = function() {
        return f.apply(obj);
      })
    )
  );
var view = {
  label: 'docs',
  click: function() {
    console.log('clicked ' + this.label);
  }
};
bindAll(view, 'click');
document.body.addEventListener('click', view.click);
// Log 'clicked docs' when clicked.