- 创建一个全新的对象
- 被执行[[prototype]](也就是__proto__)链接
- 使this指向新创建的对象
- 创建的每个对象最终被[[prototype]]链接到这个函数的prototype对象上
- 如果函数没有返回对象类型Object(包含Function,Array,Date,RegExp,Error),那么表达式中的函数调用将返回该对象引用
/** * 模拟new实现 */ const objectFactory = () => { const obj = new Object(); const Constructor = [].shift.call(arguments); obj.__proto__ = Constructor.prototype; const ret = Constructor.apply(obj, arguments); return typeof ret === 'object' ? ret : obj; }复制代码