JavaScrip设计模式(二)——构造器模式和原型模式


1.构造器模式

// 以录入学生系统为例子

// 不使用设计模式的写法
let students1 = {
  name: '张三',
  age: 18
}
let students2 = {
  name: '李四',
  age: 19
}
console.log(students1, students2);


// 构造器模式
function Students(name, age){
  this.name= name;
  this.age = age;
}
let s1 = new Students('张三', 18);
let s2 = new Students('李四', 19);
console.log(s1, s2);

在这里插入图片描述

2. 原型模式

// 以录入学生系统为例子

// 不使用设计模式的写法
let students1 = {
  name: '张三',
  age: 18
}
let students2 = {
  name: '李四',
  age: 19
}
console.log(students1, students2);

// 原型模式
function Students(name, age){
  this.name= name;
  this.age = age;
}
Students.prototype.sayHi = function(){
    console.log('我是' +this.name +',今年'+ this.age+'岁了。');
}
let s1 = new Students('张三', 18);
let s2 = new Students('李四', 19);
console.log(s1, s2);
s1.sayHi();
s2.sayHi();

在这里插入图片描述

补充:在es6出来后,使用类的方式会比使用原型更加的简便。如下代码,效果是一样的。

// 使用类的写法
class Student{
  constructor(name, age){
    this.name = name;
    this.age = age;
  }
  sayHi(){
    console.log('我是' +this.name +',今年'+ this.age+'岁了。');
  }
}
let s1 = new Student('张三', 18);
let s2 = new Student('李四', 19);
s1.sayHi(); // 我是张三,今年18岁了。
s2.sayHi(); // 我是李四,今年19岁了。

如上所示:
最原始的比较冗余。
构造器里面的方法其实是重复在内存空间生成新的方法,会导致内存的消耗。
原型的添加了很多变量,会导致变量的全局污染。
类不仅解决了上述问题,同时利于其他语言对js的理解。

总结

构造器里面生成的方法是不同的,所以会导致内存的消耗,
原型中添加的方法会导致全局污染,
相对来讲,这两种设计模式都有一定的弊端,因此,目前常用的是类生成方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值