code: function (r, varArgs) {
              var args = util.makeArray(arguments), len = args.length - 2, i = 1, proto, arg, ov = args[len], wl = args[len + 1];
              args[1] = varArgs;
              if (!util.isArray(wl)) {
                  ov = wl;
                  wl = undef;
                  len++;
              }
              if (typeof ov !== 'boolean') {
                  ov = undef;
                  len++;
              }
              for (; i < len; i++) {
                  arg = args[i];
                  if (proto = arg.prototype) {
                      arg = util.mix({}, proto, true, removeConstructor);
                  }
                  util.mix(r.prototype, arg, ov, wl);
              }
              return r;
          }
docs: Applies prototype properties from the supplier to the receiver.
  @param   {Object} r received object
  @param   {...Object} varArgs object need to  augment
  {Boolean} [ov=true] whether overwrite existing property
  {String[]} [wl] array of white-list properties
  @return  {Object} the augmented object
  @member KISSY