Skip to content

Instantly share code, notes, and snippets.

@donpark
Last active August 25, 2016 08:33
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save donpark/e071d8c0ea96ca3e476c28838af2b5ba to your computer and use it in GitHub Desktop.
Save donpark/e071d8c0ea96ca3e476c28838af2b5ba to your computer and use it in GitHub Desktop.
bind all onXXX methods of an object
export function bindMethods(obj, filter) {
if (obj) {
for (let name of Object.getOwnPropertyNames(Object.getPrototypeOf(obj))) {
let value = obj[name]
if (typeof value === 'function' && filter(name, value)) {
obj[name] = value.bind(obj)
}
}
}
}
const eventListenerFilter = (name, method) => /on[A-Z]\w*/.test(name)
export function bindEventListeners(obj) {
bindMethods(obj, eventListenerFilter)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment