手写new实现

new的原理

1.创建一个空对象

2.将新对象的__proto__指向构造函数的prototype对象

3.this指向新对象,给新对象添加属性

4.返回新对象

    function newFn(fn,...args){
        let obj = {}
        obj.__proto__ = fn.prototype
        let res = fn.apply(obj,args)
        if(typeof res=="object"||typeof res=="function"&&res!==null){
            return res
        }
        return obj
    }

 

posted @ 2020-12-24 20:21  `Duet`  阅读(92)  评论(0编辑  收藏  举报