遇到一个问题,使用封装的组件,该组件 原有的方法不满足需求,需要重构该函数。
两种方法
// 一、保存原函数,然后在调用前后加上自己的代码。
let myObject = {
name:"王大拿",
doSomething:function(){
console.log("我叫王大拿");
}
}
myObject.originDoSomething = myObject.doSomething;
myObject.doSomething = function(){
console.log("先要做的事情");
myObject.originDoSomething();
console.log("后要干的事情");
}
myObject.doSomething();
//该方法简单,易懂
使用高阶函数
let myObject = {
name:"王大拿",
doSomething:function(){
console.log("我叫王大拿");
}
}
//函数自执行,返回一个函数,传入需要重构函数自身,apply绑定this以及参数
myObject.doSomething = (function(originFunc){
return function(){
console.log("先要做的事情");
originFunc.apply(this,arguments);
console.log("后要干的事情");
}
})(myObject.doSomething)