code: function wrap(method) {
              return function() {
                  // cast any arguments into an array, since they're
                  // natively objects
                  var args = Array.prototype.slice.apply(arguments);
                  // make the first argument the array itself
                  args.unshift(this);
                  // return the result of the ss method
                  return ss[method].apply(ss, args);
              };
          }
docs: create a closure with a method name so that a reference like `arrayMethods[i]` doesn't follow the loop increment