四种设计模型

1.工厂模式 使用工厂函数批量创建对象

    优点:可以批量创建对象

    缺点:无法区分种类创建对象都是Object的实例 方法冗余

var sayName = function(){
  console.log(this.name)
};//b1001
function Person(name,age,gender){
  return {
    name:name,
    age:age,
    gender:gender,
    sayName:sayName
  }
}
var p1 = Person('terry',12,'male');
var p2 = Person('larry',18,'female');

2.构造函数模式

     优点:可以批量创建对象、可以区分种类

     缺点:方法冗余

var sayName = function(){
  console.log(this.name)
}
function Person(name,age,gender){
this.name = name;
  this.age = age;
  this.gender = gender;
  this.sayName = sayName;
}
var p1 = new Person('terry',12,'male');
var p2 = new Person('larry',18,'female');

3.原型模式 (不单独使用)  构造函数不做任何处理

     将实例所有属性和方法全部写在原型对象中

     优点:可以区分种类 可以批量创建对象 方法不冗余

     缺点:所有实例方法和属性一样

function Person(){};
Person.prototype.name = 'lisi';
Person.prototype.age = 12;
Person.prototype.gender = 'male';
Person.prototype.sayName = function(){
  console.log(this.name);
};
Person.prototype.firends = [];
var p1 = new Person();
var p2 = new Person();
console.log(p1,p2);
console.log(p1.name,p2.name,p1.sayName(),p2.sayName());
p1.firends.push('tom');
console.log(p1.firends,p2.firends);

组合模式

    将实例私有属性和私有方法放在构造函数中

    将公共方法和属性放在原型对象中

function Person(name,age,gender,weight){
    //私有属性
   this.name=name;
   this.age=age;
   this.gender=gender;
   //私有方法
   this.weight=function(){
    console.log(weight)
   }
}
//公共方法
Person.prototype={
    //改变原型对象
    constructor:Person,
    sayName:function(){
        console.log(this.name)
    },
    type:'person实例'
}
const p1 = new Person('zhangsan',20,'男','50kg')
const p2 = new Person ('xiaohua',18,'女','40kg')

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值