美文网首页
js new 操作符的原理

js new 操作符的原理

作者: 黎明的叶子 | 来源:发表于2021-11-24 11:15 被阅读0次

    见代码

        function _new(fun) {
            let obj = {} 
            // obj.__proto__ = fun.prototype // 由于__proto__属于隐式属性,有的浏览器不能识别这样写 所以用下面写法
            Object.setPrototypeOf(obj, fun.prototype)
            let result = fun.call(obj)
            if(!result) return obj // 排除结果为null的情况
            if(/^(object|function)$/.test(typeof result)) return result //如果函数执行返回的是object和function 那么以结果为准
            return obj
        }
    
        function Fn() {
            this.name = 'limingyan'
            this.age = 30
            return { a: 100, b: 100 } //返回的是result 即为当前结果
            // return 1  //返回的是obj
        }
        // let fn = new Fn()
        let fn = _new(Fn)
        console.log(fn)
    
    

    相关文章

      网友评论

          本文标题:js new 操作符的原理

          本文链接:https://www.haomeiwen.com/subject/ziuatrtx.html