new的过程做了什么,实现一个new

/**
 * 实现一个new
 * by daidai
 */
function Dog (name){
    this.name = name;
    this.say = function () {
        console.log('我的name叫' + this.name)
    }
 }

 function _new (fn,...args) {
    const _obj = Object.create(Dog.prototype)
    const rel = fn.apply(_obj,args)
    return rel instanceof Object ? rel : _obj
 }

 let news = _new(Dog,'zhangsan')

由上代码可以看出  new的过程其实就是以构造器的prototype属性为原型,创建一个新的对象,并且把构造器的this指向新创建的这个对象

posted @ 2020-03-20 14:37  一只吱吱侠  阅读(222)  评论(0编辑  收藏  举报