title: Using apply() vs call(), which one to use in this case?
body: <p>Taking a look at code from Leaflet api</p>
  <p>My question is why <code>wrapperFn.apply(context, args);&lt;/code&gt; and &lt;code&gt;fn.apply(context, args);</code> using <code>apply()</code> and not <code>call()</code>.</p>
  <p>How do you know which one to use ?</p>
  <p>Confused because I don't know ahead of time if my passing function is using an array or not.</p>
  <pre class="lang-js prettyprint-override"><code>limitExecByInterval: function (fn, time, context) {
      var lock, execOnUnlock;
  
      return function wrapperFn() {
          var args = arguments;
  
          if (lock) {
              execOnUnlock = true;
              return;
          }
  
          lock = true;
  
          setTimeout(function () {
              lock = false;
  
              if (execOnUnlock) {
                  wrapperFn.apply(context, args);
                  execOnUnlock = false;
              }
          }, time);
  
          fn.apply(context, args);
      };
  },
  </code></pre>