SOURCE

function objectFactory() {

    var obj = new Object(),

    Constructor = [].shift.call(arguments);// shift会改变原数组,arguments第一个参数是构造函数,剩下是参数

    obj.__proto__ = Constructor.prototype;// 实例的原型指向构造函数的原型

    var ret = Constructor.apply(obj, arguments);// 构造函数的this指向实例

    return typeof ret === 'object' ? ret : obj;// 如果构造函数返回obj就返回obj否则返回值

};
console 命令行工具 X clear

                    
>
console