OperaでのArray.prototype.shift
Opera(9.01)でArray.prototype.shift
を配列以外に適用したら変なことになりました。 たとえば
(function() { Array.prototype.shift.call(arguments); alert(Array.prototype.join.call(arguments)); })(1,2,3,4);
IEやFirefoxではちゃんと'2,3,4
'となるのにOperaだと',2,3
'になってしまいます。
if (window.opera) { Array.shift = function(array) { var top = array[0]; var length = array.length; for (var i = 1; i < length; ++i) array[i-1] = array[i]; if (length > 0) --array.length; return top; }; } else if(!Array.shift) { Array.shift = function(array) { return Array.prototype.shift.call(array); }; }
とりあえずこうしてArray.shift
を使うことにしました。
きのうはこれで30分くらい悩むはめに。