引数の束縛、順序入れ替え
Function.prototype.cut = function (order) { var self = this; return function () { var args = []; order.forEach(function (i, j) { args[j] = this[i]; }, arguments); return self.apply(null, args); }; }; Array.cut([1, 0, 2])('b', 'a', 'c'); // ['a', 'b', 'c']