Reputation: 183
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
Reputation: 887365
apply()
accepts an array-like object.
You need to either pass an array or set length
.
Upvotes: 4