js创建对象的几种方法

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
复制代码

转载于:https://juejin.im/post/5c1afeed6fb9a04a053fa1fe

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值