采用和节流、防抖一样的实现方式,用高阶函数实现,也就是 encapsulation
返回一个函数,这个函数会在执行时把参数传递给 method
:
const encapsulation = function (method) {
return function(...args){
try {
//调用encapsulation这个方法时传入方法或函数会执行在这里
return method.bind(this)(...args);
} catch (error) {
return error
}
}
};
// 调用的时候:
function test(a, b){
return console.log(a, b);
}
const tryTest = encapsulation(test);
tryTest(1, 2); // 1, 2
不过要慎用encapsulation
,因为屏蔽错误往往会导致调试困难,甚至导致更为棘手的问题;另外,在容易产生性能瓶颈的代码中也要尽量保证函数的可靠性和参数的一致性,使用高阶函数和try...catch
都可能进一步降低性能。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…