see https param derivedCtor param baseCtors export function applyMixins ( derivedCtor , baseCtors ) { baseCtors . forEach ( baseCtor => { Object . getOwnPropertyNames ( baseCtor . prototype ) . forEach ( name => { derivedCtor . prototype [ name ] = baseCtor . prototype [ name ] ; } ) ; } ) ; } see https param derivedCtor param baseCtors export function applyMixinsWithoutProperties ( derivedCtor , baseCtors ) { baseCtors . forEach ( baseCtor => { Object . getOwnPropertyNames ( baseCtor . prototype ) . forEach ( name => { const descriptor = Object . getOwnPropertyDescriptor ( baseCtor . prototype , name ) ; if ( descriptor !== undefined && descriptor . get === undefined && name !== "constructor" ) { derivedCtor . prototype [ name ] = baseCtor . prototype [ name ] ; } } ) ; } ) ; }