day193-模拟new

要点

  1. 模拟new
    直接上代码,之前有写过两次,但是一个过于毛糙,一个过于复杂不便于理解。这里根据记忆,再手写一遍。

    代码

    /**
    * 模拟new
    */
    function newFactory () {
    Constructor = [].shift.call(arguments)
    // __proto__不建议使用了,建议用Object.create()代替
    // var newObj = Object.create(null)
    // newObj.__proto__ = Constructor.prototype

    var newObj = Object.create(Constructor.prototype)

    var r = Constructor.apply(newObj, arguments)

    return typeof newObj === 'object' ? r || newObj : newObj
    }

    function newTes (name) {
    this.name = name
    }
    console.log(newFactory(newTes, 'ceshi'))
文章作者: lmislm
文章链接: http://lmislm.com/2019/07/25/2019-07-25/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LMISLMのBlog