2020-06-30
描述
将对象的方法绑定到对象上下文中,以覆盖现有存在的方法。
提示
- 使用
Array.prototype.forEach()
返回需要绑定的方法 - 使用
Function.prototype.apply()
将给定的上下文(obj
)应用到每一个指定的fn
上
代码
const bindAll = (obj, ...fns) =>
fns.forEach(
fn => (
(f = obj[fn]),
(obj[fn] = function() {
return f.apply(obj);
})
)
);
示例
为 click 方法指定上下文:
var view = {
label: 'docs',
click: function() {
console.log('clicked ' + this.label);
}
};
bindAll(view, 'click');
// 点击 id 为 bindAll 的元素将打印 'clicked docs'
document.getElementById("bindAll").addEventListener('click', view.click);