JS之手写new操作符

228 阅读1分钟

new操作符

我们在创建对象时,通常会用字面量创建方式,但是在使用构造函数生成实例,或者使用类来创建对象时,我们需要使用 new

new一共帮我们做了四件事情

  1. 创建一个空对象
  2. 将空对象的原型指向构造函数的prototype
  3. 将空对象作为 this 传入构造函数中并执行
  4. 返回这个新对象
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
}