code: function(length, method, attribute) {
      switch (length) {
        case 1: return function() {
          return _[method](this[attribute]);
        };
        case 2: return function(value) {
          return _[method](this[attribute], value);
        };
        case 3: return function(iteratee, context) {
          return _[method](this[attribute], cb(iteratee, this), context);
        };
        case 4: return function(iteratee, defaultVal, context) {
          return _[method](this[attribute], cb(iteratee, this), defaultVal, context);
        };
        default: return function() {
          var args = slice.call(arguments);
          args.unshift(this[attribute]);
          return _[method].apply(_, args);
        };
      }
    }
docs: Proxy Backbone class methods to Underscore functions, wrapping the model's `attributes` object or collection's `models` array behind the scenes.  collection.filter(function(model) { return model.get('age') > 10 }); collection.each(this.addView);  `Function#apply` can be slow so we use the method's arg count, if we know it.