绑定对象的所有方法
将对象的所有方法绑定到对象本身,覆盖现有的方法。
- 使用
Array.prototype.forEach()
遍历给定的fns
。 - 为每个方法返回一个函数,使用
Function.prototype.apply()
将给定的上下文(obj
)应用于fn
。
const bindAll = (obj, ...fns) =>
fns.forEach(
fn => (
(f = obj[fn]),
(obj[fn] = function() {
return f.apply(obj);
})
)
);
let view = {
label: 'docs',
click: function() {
console.log('clicked ' + this.label);
}
};
bindAll(view, 'click');
document.body.addEventListener('click', view.click);
// 当点击时,输出'clicked docs'。