var bp = (base||0).prototype, mp = (mixin||0).prototype; // fresh constructor, fresh prototype var ctor = dojo.declare._makeCtor(); // cache ancestry dojo.mixin(ctor, {superclass: bp, mixin: mp, extend: dojo.declare._extend}); // chain prototypes if(base){ctor.prototype = dojo._delegate(bp);} // add mixin and core dojo.extend(ctor, dojo.declare._core, mp||0, {_constructor: null, preamble: null}); // special help for IE ctor.prototype.constructor = ctor; // name this class for debugging ctor.prototype.declaredClass = (bp||0).declaredClass + '_' + (mp||0).declaredClass; return ctor;