美文网首页
探索new 实例化对象时帮我们做了哪些工作

探索new 实例化对象时帮我们做了哪些工作

作者: zackxizi | 来源:发表于2018-08-27 10:36 被阅读0次

    1. 先看一个列子

        Person = function (age=12) {
            this.age = age
        }
        // 打印出来的值为undefined
        console.log(Person.age);
    
        // 但是通过new 运算符 就可以获取age值了
        // 此时被实例化的ming = Person {age: 12}
        ming = new Person(27)
    
        // 这里就能获取到age=27了
        console.log(ming.age)
    

    那么为什么通过new之后就能通过键值对的形式获取age值呢

    2. new 为我们创建实例做了哪些工作

        new Person(27) = {
            var obj = {}
            obj.__proto__ = Person.prototype // 此时便建立了obj对象的原型链
            var result = Person.call(obj, 27) // 通过call将Person的属性都复制到result
            return typeof result === 'object' ? result : obj // 如果无返回值或者返回一个非对象值,则将obj返回作为新对象
        }
    

    参考:new创建对象的过程发生了什么

    相关文章

      网友评论

          本文标题:探索new 实例化对象时帮我们做了哪些工作

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