以下是我的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中实现这一点?
答案 0 :(得分:3)
你可以这样做。这为除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"