new操作符
我们在创建对象时,通常会用字面量创建方式,但是在使用构造函数生成实例,或者使用类来创建对象时,我们需要使用 new
new一共帮我们做了四件事情
- 创建一个空对象
- 将空对象的原型指向构造函数的prototype
- 将空对象作为 this 传入构造函数中并执行
- 返回这个新对象
function _new(constructor,params){
let arg=[].slice.call(arguments)
let constructor=arg.shift()
let context=Object.create(constructor.prototype)
let result=constructor.apply(context,arg)
return (typeof result==='object'&&result!==null)
?result
:context
}