Javascript 在执行任何函数之前先执行函数
我想做的是每次在JS中执行任何函数之前自动执行一个函数,如果可能的话,不管它是自定义函数还是本机函数 即 我不想做以下事情:Javascript 在执行任何函数之前先执行函数,javascript,function,triggers,onbeforeload,Javascript,Function,Triggers,Onbeforeload,我想做的是每次在JS中执行任何函数之前自动执行一个函数,如果可能的话,不管它是自定义函数还是本机函数 即 我不想做以下事情: Function.prototype.onBefore = function(){}; blah.onBefore(); 甚至有可能做到我所要求的吗?有任何建议,请阅读,或w/e 提前感谢。如果只提供函数作为对whatIWant的回调,怎么样: function whatIWant(fn) { var fnName = fn.toString(
Function.prototype.onBefore = function(){};
blah.onBefore();
甚至有可能做到我所要求的吗?有任何建议,请阅读,或w/e
提前感谢。如果只提供函数作为对whatIWant的回调,怎么样:
function whatIWant(fn) {
var fnName = fn.toString();
fnName = fnName.substr('function '.length);
fnName = fnName.substr(0, fnName.indexOf('('));
console.log('called before ' + fnName);
fn();
}
function meh() {
console.log('called meh');
}
function blah() {
console.log('called blah');
}
whatIWant(meh);
whatIWant(blah);
whatIWant(alert)
你们觉得这个解决方案怎么样?:)
函数bleh(){
log('exe a');
}
功能限制fn(fn,n){
var极限=n;
var计数器=1;
var fnName=fn.toString();
fnName=fnName.substr('function'.length');
fnName=fnName.substr(0,fnName.indexOf('('));
返回函数(){
if(counter)我猜只是解析脚本使用了一些本机函数,所以你的不可能是第一个…我能想象的最接近的方法是使用。也许如果你描述你试图解决的真正问题是什么,我们可以更好地知道如何回答。在创建任何对象之前尝试修改内置原型并不是一件明智的事情。真正的问题是…为什么?谢谢你的回答wers,我将同时看一看iLife。这个问题来自于我学习“advanced”JS的一系列练习。练习是:“创建一个函数,可以将其他函数的执行限制在一定的时间内”@R.D.对于该练习,我认为您应该考虑一个可以调用的函数,向它传递一个函数和一个计数,然后该函数返回一个函数,该函数执行输入函数所执行的操作,但直到达到调用计数为止。
function whatIWant(fn) {
var fnName = fn.toString();
fnName = fnName.substr('function '.length);
fnName = fnName.substr(0, fnName.indexOf('('));
console.log('called before ' + fnName);
fn();
}
function meh() {
console.log('called meh');
}
function blah() {
console.log('called blah');
}
whatIWant(meh);
whatIWant(blah);
whatIWant(alert)
function bleh(){
console.log('exe a');
}
function limitFn(fn,n) {
var limit = n ;
var counter = 1 ;
var fnName = fn.toString();
fnName = fnName.substr('function '.length);
fnName = fnName.substr(0, fnName.indexOf('('));
return function(){
if(counter <= limit) {
console.log(counter + ' call before ' + fnName + ' limit ' + limit);
counter++;
fn();
} else {
console.log('limit of ' + limit + ' exes reached') ;
}
};
}
limited = limitFn(bleh,2);
limited();
limited();
limited();
limited();