js 创建(new)一个对象的过程

1: 对象字面量的方式
    let o = {}
2: 通过Object.create()
    let o = Object.create({})
3: 通过new 构造函数的方式
    let o = new Object()



 ```javascript


    function Person(name) {
        this.name = name
    }

    
    Person.prototype.getName = function () {
        return this.name
    }


    var ObjectFactory = function () {
        // 创建一个对象
        var obj = new Object()
        // 返回第一个参数作为构造函数
        var Constructor = [].shift.call(arguments)
        // 将构造函数的原型复制于对象的原型
        obj.__proto__ = Constructor.prototype
        // 调用构造函数,并将obj 作为this, arguments作为参数
        var ret = Constructor.apply(obj, arguments)
        // 如果构造函数里返回一个对象的话,就直接返回,否则我们就返回this即new创建的对象
        return typeof ret === 'object'? ret: obj
    }

 
    var a = ObjectFactory(Person, 'sven')
    console.log(Object.getPrototypeOf(a) === Person.prototype)



    // 效果等效
    var a = ObjectFactory(Person, 'sven')
    var a = new Person('sven ')

    

    如果构造函数用return 显示的返回一个对象,那么new之后,会返回这个对象。
    如果构造函数不显示的返回任何数据,或返回一个非对象类型的数据,则默认返回this指定的对象。即构造函数生成的对象。

    


```
https://www.jianshu.com/p/60d1b79974bd



















發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章