docs: function (fn, context) {
          var keys = Object.keys(this),
              l = keys.length,
              i = -1,
              m = {},
              val, key;
          while (++i < l) {
              key = keys[i];
              val = fn.call(context, this[key], key, this);
              if (val !== undefined) {
                  m[key] = val;
              }
          }
          return m;
      }