实现new

new

1.新生成了一个对象

2.链接到原型

3.绑定 this

4.返回新对象

//第一个参数是 构造函数
function create() {
    // 创建一个空的对象
    let obj = new Object()
    // 获得构造函数
    let Con = [].shift.call(arguments)
    // 链接到原型
    obj.__proto__ = Con.prototype
    // 绑定 this,执行构造函数
    let result = Con.apply(obj, arguments)
    // 确保 new 出来的是个对象
    return typeof result === 'object' ? result : obj
}

var a = create(Array,123,456);

//a [123, 456]
Table of Contents