lib/class.js
function(properties, cls, superClass, options) {
  var opts = _.defaults({}, options, { wrap: true });
  if (opts.wrap) {
    var prototype = cls.prototype;
    if (superClass) {
      // combine the cls prototype with the superClass prototype, but do so
      // using a new prototype chain to avoid copying (and invoking accessor
      // methods) either prototype. the combined prototype can be used to wrap
      // properties.
      prototype = Object.create(prototype);
      prototype.prototype = superClass.prototype;
    }
    properties = wrap.super.properties(properties, prototype);
  }
  _.extend(cls.prototype, properties);
}
function(properties, cls, superClass, options) {
  var opts = _.defaults({}, options, { wrap: true });
  if (opts.wrap) {
    var prototype = cls.prototype;
    if (superClass) {
      // combine the cls prototype with the superClass prototype, but do so
      // using a new prototype chain to avoid copying (and invoking accessor
      // methods) either prototype. the combined prototype can be used to wrap
      // properties.
      prototype = Object.create(prototype);
      prototype.prototype = superClass.prototype;
    }
    properties = wrap.super.properties(properties, prototype);
  }
  _.extend(cls.prototype, properties);
}
function ( properties , cls , superClass , options ) { var opts = _ . defaults ( { } , options , { wrap : true } ) ; if ( opts . wrap ) { var prototype = cls . prototype ; if ( superClass ) { // combine the cls prototype with the superClass prototype, but do so // using a new prototype chain to avoid copying (and invoking accessor // methods) either prototype. the combined prototype can be used to wrap // properties. prototype = Object . create ( prototype ) ; prototype . prototype = superClass . prototype ; } properties = wrap . super . properties ( properties , prototype ) ; } _ . extend ( cls . prototype , properties ) ; }
Generic reopen to use for both instance and static methods.

@name Class~reopen
@param {Object} properties The properties to add.
@param {ClassConstructor} cls The class to add properties to.
@param {ClassConstructor} superClass The class's super class.
@param {Object} [options]
@param {Boolean} [options.wrap=true] Whether to wrap the properties.
Generic reopen to use for both instance and static methods .