JavaScript的五种对象创建模式

对象创建模式

object构造函数模式

先创建一个空的object,再添加属性,适用于不确定对象的数据

var p = new Object()
p.name = "zlearn"
p.setName = function(name){
    this.name = name
}

对象字面量模式

适用对象来创建如果创建多个对象,会有重复代码,适用于其实对象内部数据是确定的

var p = {
	name: 'Tom',
	age: 12,
	setName: function(name){
		this.name = name
	}
}

工厂模式

返回一个对象的函数,适合需要创建多个对象,缺点就是对象没有一个具体的类型

  function createPerson(name,age){
    var obj = {
      name: name,
      age:age,
      setName:function(name){
        this.name  = name
      }
    }
    return obj
  }
  var p1 = createPerson("zlearn",12)
  var p2 = createPerson("Eason",13)

自定义构造函数模式

缺点就是每个对象都有相同的数据,浪费内存,setName()都是一样的,但是创建了很多份。

 function createPerson(name,age){
    this.name = ame 
    this.age = age
    this.setName = function(name){
      this.name = name
    }
 }
 var p1 = createPerson("zlearn",12)
 var p2 = createPerson("Eason",13)

构造函数+原型模式

函数里只存属性,将方法存到原型对象上

  function createPerson(name,age){
     this.name = ame 
     this.age = age
  }
 createPerson.prototype.setName = function(name){
       this.name = name
  }
  var p1 = createPerson("zlearn",12)
  var p2 = createPerson("Eason",13)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值