new一个函数时发生了什么?
- 创建一个新的对象
- 将构造函数的原型复制给新对象(this就指向了新对象)
- 执行构造函数中代码
- 返回一个新对象
js实现new
function new(){
var constr = Array.prototype.shift.call(arguments) //获取构造函数: 第一个参数
var obj = Object.create(constr.prototype) // 创建一个新的对象并使用构造函数原型
var res = obj.apply(obj, arguments) // 执行构造函数中的代码
return res instanceof object ? res : obj //基本类型返回对象, 对象类型返回构造函数执行的值
}
网友评论