实现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]