# new操作符

# 实现

  1. 创建一个新对象
  2. 绑定原型
  3. 执行构造函数中的代码(为这个新对象添加属性)
  4. 返回新对象
function objectFactory() {
    var obj = Object.create(null)

    Constructor = Array.prototype.shift.call(arguments);
    obj.__proto__ = Constructor.prototype;

    var ret = Constructor.apply(obj, arguments);

    return typeof ret === 'object' ? ret : obj;
};
1
2
3
4
5
6
7
8
9
10