joni539
joni539

Reputation: 183

Javascript apply() arguments

How comes this 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' });

outputs :

a { '0': 'foo', '1': 'bar' }
b { '0': 'foo', '1': 'bar' }
b {}

instead of :

a { '0': 'foo', '1': 'bar' }
b { '0': 'foo', '1': 'bar' }
b { '0': 'foo', '1': 'bar' }

The arguments variable in function a is identical to the object { '0': 'foo', '1': 'bar' }.

Any clues ?

Upvotes: 2

Views: 1602

Answers (1)

SLaks
SLaks

Reputation: 887365

apply() accepts an array-like object.

You need to either pass an array or set length.

Upvotes: 4

Related Questions