时间:2010-07-26 04:49:17

标签: javascript aop

5 个答案:

答案 0 :(得分:26)

两个选项:

静态变量以下是使用自调用函数将静态变量存储在闭包中的静态(如C语言)变量的创建方法。

var myFun = (function() {
  var called = false;
  return function() {
    if (!called) {
      console.log("I've been called");
      called = true;
    }
  }
})()

空功能替换运行后将功能设置为空功能。

function callonce() {
  console.log("I've been called");
  arguments.callee = function() {};
}

抽象概念这是一个函数,它返回一个只被调用一次的函数,这样我们就不必担心将锅炉板代码添加到每个函数中。

function makeSingleCallFun(fun) {
  var called = false;
  return function() {
    if (!called) {
       called = true;
       return fun.apply(this, arguments);
    }
  }
}

// Alternate implementation   
function makeSingleCallFun(fun) {
    return function() {
      return fun.apply(this, arguments);
      arguments.callee = function() {};
    }
}

var myFun = makeSingleCallFun(function() {
  console.log("I've been called");
});
myFun(); // logs I've been called
myFun(); // Does nothing

答案 1 :(得分:10)

答案 2 :(得分:3)

答案 3 :(得分:3)

答案 4 :(得分:0)