Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在执行任何函数之前先执行函数_Javascript_Function_Triggers_Onbeforeload - Fatal编程技术网

Javascript 在执行任何函数之前先执行函数

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(

我想做的是每次在JS中执行任何函数之前自动执行一个函数,如果可能的话,不管它是自定义函数还是本机函数

我不想做以下事情:

    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();