以下是我的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"