仅访问一次JavaScript / jQuery实例

时间:2016-03-12 12:46:08

标签: javascript jquery function call

我有一个jQuery函数,可以在多个事件(按钮点击,更改等)上调用

此函数在documentReadyFunction中调用,并带有起始值..

每次调用此函数时,参数都会传递给函数。

我的问题是:每次调用函数时我都不想创建一个新的Object,因为如果我设置一个变量来判断函数的某个部分是否正在执行,那么将始终被覆盖..

我需要做什么,才能访问第一个创建的实例,而不是每次调用函数时都创建一个新实例。

下面是我的功能的简化版本..也许你更好地理解我的问题。



$.fn.doSomething = function(param1) {
  var localParam = param1;
  var amIcalledMoreThanOnce = parseInt(0, 10);

  if (param1 == 1) {
    amIcalledMoreThanOnce = amIcalledMoreThanOnce + 1;

    if (amIcalledMoreThanOnce == 1) {
      $('#run').val(amIcalledMoreThanOnce);
      // fill form fields with URL parameters
      // This shall be executed only once after getting the URL vals
    } else {
      // set the localParam to 0 to exit this loop and reach the outter else.. 
      localParam = 0;
      $.fn.doSomething(localParam);
    }
  } else {
    $('#run').val(amIcalledMoreThanOnce);
    // use the User Input Data not the URL Params
  }
};

$.fn.doSomething(1);
$.fn.doSomething(1);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<input type="number" id="run">
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

你可以使用这种模式:

var nameOfYourFunction = (function() {

    var initializedOnlyOnce = {};

    return function() {
        //use initializedOnlyOnce here.
    }

})();

这里你看到的是;您在代码运行时立即创建并运行一个函数。外部函数立即返回内部函数,并将其分配给nameOfYourFunction。然后你可以使用nameOfYourFunction();就像任何其他功能一样。但是,在外部函数中声明的任何变量都可用于nameOfYourFunction(),而initializedOnlyOnce将永远不会再次初始化。