对象创建模式


  • 1Object构造函数模式:
    套路:先创建空Object对象,再动态添加属性/方法
    适用场景:起始时不确定对象内部数据
    问题:语句太多
    2对象字面量模式
    套路:使用{}创建对象,同时指定属性/方法
    适用场景:起始时对象内部数据是确定的
    问题:如果创建多个对象,有重复代码
    3
    工厂模式 //不太用
    套路:通过工厂函数动态创建对象并返回
    适用场景:需要创建多个对象
    问题:对象没有一个具体的类型,都是Object类型
    4自定义构造函数
    套路:自定义构造函数,用new创建对象
    适用场景:需要创建多个类型确定的对象
    问题:每个对象都有相同的数据,浪费内存
    5构造函数+原型的组合模式
    套路:自定义构造函数,属性函数中初始化,方法添加在原型上
    适用场景:需要创建多个类型确定的对象
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		
	</head>
	<body>
		<script type="text/javascript">
			
			/* 1.
			Object构造函数模式:
			  套路:先创建空Object对象,再动态添加属性/方法
			  适用场景:起始时不确定对象内部数据
			  问题:语句太多 
			*/
			var  p = new Object()  //此时内部数据是不确定的
			p.name = 'Tom'
			p.age = 12
			p.setName = function (name){
				this.name = name
			}
			
			/*2
			对象字面量模式
			  套路:使用{}创建对象,同时指定属性/方法
			  适用场景:起始时对象内部数据是确定的
			  问题:如果创建多个对象,有重复代码
			*/
		   var p ={
			   name:'Tom',
			   age:12,
			   setName:function(name){
				   this.name = name;
			   }
		    }
			
			/*3
			工厂模式    //不太用
			   套路:通过工厂函数动态创建对象并返回
			   适用场景:需要创建多个对象
			   问题:对象没有一个具体的类型,都是Object类型
			*/
		   function createPerson(name,age){
			   var obj = {
				   name:name,
				   age:age,
				   setName:function(name){
					   this.name = name
				   }
			   }
			   return obj
		    }
			createPerson("Tom","12")
		    /*4
			自定义构造函数
			  套路:自定义构造函数,用new创建对象
			  适用场景:需要创建多个类型确定的对象
			  问题:每个对象都有相同的数据,浪费内存
			  */
			  function Person(name,age){
				  this.name =name
				  this.age =age
				  this.setName=function(name){
					  this.name =name
				  }
			  }
			  var s = new Person()  //会有同一个原型对象
		   
		     /*5
			 构造函数+原型的组合模式
			   套路:自定义构造函数,属性函数中初始化,方法添加在原型上
			   适用场景:需要创建多个类型确定的对象
			   
		     */
			function Person(name, age){
				this.name =name
				this.age=age
			}
			Person.prototype.setName =function(name){
				this.name=name
			}
			
			
			
		</script>
	</body>
</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值