繁体   English   中英

在javascript中拦截一个函数

[英]Intercept a function in javascript

以下是我的javaScript代码。

var myObjfn = {
    before : function(){
        console.log("before");
    },
    loadA: function(){
        console.log("loadA");
    },
    loadB: function(){
        console.log("loadB");
    },
    loadC: function(){
        console.log("loadC");
    }
 }

每当我调用myObjfn.loadA()时,它应该在执行loadA方法之前调用myObjfn.before()方法。 对于loadB()和loadC()也是如此。 我不想在所有loadA,loadB和loadC方法中显式调用before()方法。 有没有选择在javascript中实现这一点?

你可以这样做。 这为除了before函数之外的对象中的每个函数创建了一个包装函数。

var myObjfn = { ... };

Object.keys(myObjfn).forEach(key => {
  if (key === "before") return;
  var oldFunc = myObjfn[key];

  myObjfn[key] = function() {
    myObjfn.before();
    return oldFunc.apply(this, arguments);
  };
});

myObjfn.loadA();

// "before"
// "loadA"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM