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);

IEFirefoxではちゃんと'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分くらい悩むはめに。