Avoid all 'arguments' mutation for Safari's sake.
[pwl6.git] / src / yuu / yf.js
index 0779e7e..81ccb2e 100644 (file)
         case 1: return function () { return f.call(this, arguments); };
         default:
             return function () {
-                var args = slice(arguments, 0, length - 1);
-                args.push(slice(arguments, length - 1));
+                var args = slice(arguments, 0, length);
+                args[length - 1] = slice(arguments, length - 1);
                 return f.apply(this, args);
             };
         }
             map.call(thisArg, callback, ...).
         */
         var a = [];
-        arguments[0] = compose(pusher(a), arguments[0]);
-        each.apply(this, arguments);
+        var args = slice(arguments);
+        args[0] = compose(pusher(a), args[0]);
+        each.apply(this, args);
         return a;
     }
 
             As eachr is to each, so mapr is to map.
         */
         var a = [];
-        arguments[0] = compose(pusher(a), arguments[0]);
-        eachr.apply(this, arguments);
+        var args = slice(arguments);
+        args[0] = compose(pusher(a), args[0]);
+        eachr.apply(this, args);
         return a;
     }
 
     }
 
     function every () {
-        arguments[0] = not(arguments[0] || I);
-        return !some.apply(this, arguments);
+        var args = slice(arguments);
+        args[0] = not(args[0] || I);
+        return !some.apply(this, args);
     }
 
     function none () {