# 1.new的实现原理是什么?
# 原理
创建一个空对象 var obj = {}
修改obj.proto=Dog.prototype
只改this指向并且把参数传递过去,call和apply都可以
根据规范,返回 null 和 undefined 不处理,依然返回obj
# 代码实现
function newDog(fn,...args){
let obj = Object.create(fn.prototype)
let ret = fn.apply(obj,args)
return ret instanceof Object ? ret : obj
}
1
2
3
4
5
2
3
4
5
← 最后冲刺 2.如何正确判断this的指向? →
关于评论
评论前请填好“昵称”、“邮箱”这两栏内容,否则不会收到回复,谢谢!