define(function () {

    function F(){}

    /**
     * Do fn.apply on a constructor.
     */
    function ctorApply(ctor, args) {
        F.prototype = ctor.prototype;
        var instance = new F();
        ctor.apply(instance, args);
        return instance;
    }

    return ctorApply;

});

define(function () {

    var bind = Function.protype.bind;

    /**
     * Do fn.apply on a constructor.
     */
    function ctorApply(ctor, args) {
        var bound = bind.bind(ctor, undefined).apply(undefined, args);
        return new bound();
    }

    return ctorApply;

});

Use Function.prototype.bind to support ES6 classes
Use Function.prototype.bind to support ES6 classes

By using `bind` it will work both with old style functions as classes
and the new proper classes in ES2015.