js函数重构,在原函数上添加自己的处理

43 阅读1分钟
遇到一个问题,使用封装的组件,该组件 原有的方法不满足需求,需要重构该函数。

两种方法

//  一、保存原函数,然后在调用前后加上自己的代码。
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)