title: Javascript apply() arguments
body: <p>How comes this code :</p>
  
  <pre><code>function a() {
    console.log('a', arguments);
    b.apply(null, arguments);
  }
  function b() {
    console.log('b', arguments);
  }
  
  a('foo', 'bar');
  b.apply(null, { '0': 'foo', '1': 'bar' });
  </code></pre>
  
  <p>outputs :</p>
  
  <pre><code>a { '0': 'foo', '1': 'bar' }
  b { '0': 'foo', '1': 'bar' }
  b {}
  </code></pre>
  
  <p>instead of :</p>
  
  <pre><code>a { '0': 'foo', '1': 'bar' }
  b { '0': 'foo', '1': 'bar' }
  b { '0': 'foo', '1': 'bar' }
  </code></pre>
  
  <p>The <strong>arguments</strong> variable in function <strong>a</strong> is identical to the object <strong>{ '0': 'foo', '1': 'bar' }</strong>.</p>
  
  <p>Any clues ?</p>