如何在运行函数之前执行一些javascript?我尝试过这样的事情:
Function.prototype._call= Function.prototype.call;
Function.prototype.call = function(src) {
console.log('A function was called name = ', src)
Function.prototype._call(src);
}
但这仅在我使用
时有效myfunction.call()
我希望代码在我正常调用任何函数时起作用,例如:
myfunction()
答案 0 :(得分:1)
JavaScript中没有这样的API。最接近的是ECMAScript 2015的Proxy对象,它提供"Meta Programming"个功能。为函数调用调用apply
陷阱处理程序:
var proxy = new Proxy(function functionName() { /* ... */ }, {
apply: function(target, thisArg, argumentsList) {
console.log('%s was called', target.name);
// you may want to use the `Function.prototype.apply`
// instead of the `()` operator
target();
}
});
proxy();
答案 1 :(得分:0)
内置JavaScript没有这样的东西。这只是你必须自己实现的东西:
function MyClass() {
var self = this;
this.beforeEach = function() {
//runs before each method
}
this.myFunction = function() {
self.beforeEach();
//function code
}
this.myOtherFunction = function() {
self.beforeEach();
//function code
}
}
不优雅,但有效。