code: function mapPrototypes(vendor, protos, funcs) {
          var p, f, proto, func;
  
          // Loop over each prototype
          for (p = 0; (proto = protos[p]); p++) {
  
              // Loop over each function
              for (f = 0; (func = funcs[f]); f++) {
  
                  // Skip if the function already exists on the prototype
                  // We don't wont to cause collisions with built-ins or user defined
                  if (!vendor[func] || proto[func] || proto.prototype[func]) {
                      continue;
                  }
  
                  // Objects can only use static methods
                  // Applying to the prototype disrupts object literals
                  if (proto === Object) {
                      proto[func] = vendor[func];
                  } else {
                      extendPrototype.call(this, vendor, proto, func);
                  }
              }
          }
      }
docs: Loop over each collection and extend the prototypes.
  
  @param {Object} vendor
  @param {Array} protos
  @param {Array} funcs