lib/concur.js
function inheritFrom(parentConstructor, childConstructor, prototypeProps, constructorProps) {
  // Create a child constructor if one wasn't given
  if (childConstructor == null) {
    childConstructor = function() {
      parentConstructor.apply(this, arguments)
    }
  }

  // Make sure the new prototype has the correct constructor set up
  prototypeProps.constructor = childConstructor

  // Base constructors should only have the properties they're defined with
  if (parentConstructor !== Concur) {
    // Inherit the parent's prototype
    inherits(childConstructor, parentConstructor)
    childConstructor.__super__ = parentConstructor.prototype
  }

  // Add prototype properties - this is why we took a copy of the child
  // constructor reference in extend() - if a .constructor had been passed as a
  // __mixins__ and overitten prototypeProps.constructor, these properties would
  // be getting set on the mixed-in constructor's prototype.
  extend(childConstructor.prototype, prototypeProps)

  // Add constructor properties
  extend(childConstructor, constructorProps)

  return childConstructor
}
function inheritFrom(parentConstructor, childConstructor, prototypeProps, constructorProps) {
  // Create a child constructor if one wasn't given
  if (childConstructor == null) {
    childConstructor = function() {
      parentConstructor.apply(this, arguments)
    }
  }

  // Make sure the new prototype has the correct constructor set up
  prototypeProps.constructor = childConstructor

  // Base constructors should only have the properties they're defined with
  if (parentConstructor !== Concur) {
    // Inherit the parent's prototype
    inherits(childConstructor, parentConstructor)
    childConstructor.__super__ = parentConstructor.prototype
  }

  // Add prototype properties - this is why we took a copy of the child
  // constructor reference in extend() - if a .constructor had been passed as a
  // __mixins__ and overitten prototypeProps.constructor, these properties would
  // be getting set on the mixed-in constructor's prototype.
  extend(childConstructor.prototype, prototypeProps)

  // Add constructor properties
  extend(childConstructor, constructorProps)

  return childConstructor
}
function inheritFrom ( parentConstructor , childConstructor , prototypeProps , constructorProps ) { // Create a child constructor if one wasn't given if ( childConstructor == null ) { childConstructor = function ( ) { parentConstructor . apply ( this , arguments ) } } // Make sure the new prototype has the correct constructor set up prototypeProps . constructor = childConstructor // Base constructors should only have the properties they're defined with if ( parentConstructor !== Concur ) { // Inherit the parent's prototype inherits ( childConstructor , parentConstructor ) childConstructor . __super__ = parentConstructor . prototype } // Add prototype properties - this is why we took a copy of the child // constructor reference in extend() - if a .constructor had been passed as a // __mixins__ and overitten prototypeProps.constructor, these properties would // be getting set on the mixed-in constructor's prototype. extend ( childConstructor . prototype , prototypeProps ) // Add constructor properties extend ( childConstructor , constructorProps ) return childConstructor }
Inherits another constructor's prototype and sets its prototype and
constructor properties in one fell swoop.

If a child constructor is not provided via prototypeProps.constructor,
a new constructor will be created.
Inherits another constructor s prototype and sets its prototype and constructor properties in one fell swoop .