让前端飞前端杂记Web前端之路

实现js中new的功能

2019-05-13  本文已影响4人  会飞小超人

首先看看new具有哪些功能:

  1. 创建一个对象,对象的原型指向构造函数的prototype。
  2. 构造函数里的this指向的就是这个对象。
  3. 执行构造函数里的语句。

但还要考虑一点,构造函数里可以返回一个自定义的值,这个值es有这样的规范:
遇上返回Object就返回自身,否则返回构造的Object。

function _new(func,...arg){
    // 1. 创建一个对象,对象的原型指向构造函数的prototype。
    let obj=Object.create(func.prototype)
    // 将构造函数里的this指向这个对象,病执行构造函数里的语句
    const ret=fn.appay(obj,arg)
    // 遇上返回Object就返回自身,否则返回构造的Object
    return ret instanceof Object?ret:obj
}
上一篇 下一篇

猜你喜欢

热点阅读