js创建对象的几种方法

210 阅读1分钟

1.使用字面量创建(用的比较多)

        var obj = {
          name:'BOSS',
          age:20
        }
        obj.name //BOSS

2.Object构造函数

    var obj1 = new Object()
    obj1.name="JHON"
    obj.age = 20
    
    obj1.name //JHON

3.Object.create()

        var obj2=Object.create(null||{})
         Object.create(proto, [propertiesObject])
         
        Object.create方法,接收一个对象作为参数。而这个参数就会是新构建出来的对象的原型对象,第二个参数为可选参数,你想要添加到新创建的对象的属性。
        先说第一个参数,举个栗子:
        var temp = {name:'123'}
        var obj2=Object.create(temp)
        那么{name:'123'}就是obj2的原型对象
        obj2.__proto__== temp//true
        此时,obj2.name//123
        这个name属性不是obj2的而是其原型对象的,所以此时第二个参数就出场了。
        var obj2=Object.create(temp,{name:{value:'小明'}})
        obj2.name//小明
        Object.create(proto, [propertiesObject])第一个参数接受的是一个对象,甚至是null,或者是{}都是可以的。
        延伸一点
        通过这个方法,我们就可以实现继承。
        再举个栗子:
        
        var test = {
            name:"皮卡丘",
            age:10,
            hello(){
                console.log('就是随便打印了一些东西',this.name)
            }
        }
        var obj3 = Object.create(test)
        obj3.hello()//皮卡丘
        var obj4 = Object.create(test,{name:{value:'小智'}})
        obj4.hello()//小智
        如此,我们就继承了test的属性和方法,而且,我们还可以将其更改为我们需要的属性。

4.工厂模式

    function createObj(name,age){
      var o = new Object()
          o.name=name
          o.age=age
      return o
    }
    var obj2 = createObj('MARRY',23)
    obj2.name //MARRY

5.构造函数

    function Obj(name, age){
          this.name = name
          this.age=age
    }
    var obj3 = new Obj('BoB',23)

6.原型链方式

        function ObjProperty(){}
        ObjProperty.prototype.name="LINDA"
        ObjProperty.prototype.age=24
        
        var obj4= new ObjProperty()
        obj4.name //LINDA