javascript - Is it safe to pass 'arguments' to 'apply()' -
suppose have following code (completely useless, know)
function add( a, b, c, d ) { alert(a+b+c+d); } function proxy() { add.apply(window, arguments); } proxy(1,2,3,4);
basically, know apply expects array second parameter, know arguments
not proper array. code works expected, safe can pass array-like object second parameter in apply()
?
the following work (in chrome @ least):
function proxy() { add.apply(window, { 0: arguments[0], 1: arguments[1], 2: arguments[2], 3: arguments[3], length: 4 }); }
update: seems second code block fails in ie<9 while first 1 (passing arguments
) works. error array or arguments object expected
, shall conclude it's safe pass arguments
, while it's not safe pass array-like object in oldie.
assuming ecmascript 5.1: yes. per ecma-262, 10.6, arguments object has length
, index properties 15.3.4.3 (function.prototype.apply
) requires.
Comments
Post a Comment