new 在 JavaScript 中是实例化一个对象的操作符
实现一个 new
- 生成了一个新的对象
- 链接到原型链
- 绑定 this
- 返回新的对象
在调用 new 的过程中会发生以上四件事情,我们也可以试着来自己实现一个 new
function create() {
// 创建一个对象
const obj = new Object()
// 获得构造函数
let Con = [].shift.call(arguments)
// arguments 是一个伪数组,借用 Array.prototype 上的方法转换成真正的数组
// let args = [].slice.call(arguments)
// 链接原型
obj.__proto = Con.prototype
// 绑定 this ,执行构造函数
let result = Con.apply(obj, arguments)
// 确保 new 出来的是个对象
return typeof result === 'object' ? result : obj
}
网友评论