js设计模式

单例模式

单例模式也称作为单子模式,单体模式。单例模式的定义是产生一个类的唯一实例,是软件设计中较为简单但是很常用的一种设计模式。

单例模式的核心是确保只有一个实例,并提供全局访问

工厂模式

把实现同一件事情的相同代码放到同一个函数中,以后如果再想实现这个功能,只需要调用这个函数就可以了,提高代码的重复利用率

function createFactory(name, age) {
    let obj = {};
    obj.name = name;
    obj.age = age;
    obj.write = function () {
        console.log(name, age);
    }
    return obj;
}

let p1 = createFactory('小光', 18);
p1.write();
let p2 = createFactory('小花', 20);
p2.write();

构造函数模式

浏览器会默认创建一个当前实例的对象

// 构造函数模式 实例识别
function createPerson(name, age) {
    // 浏览器默认创建的对象就是我们的实例
    console.log(this)
    this.name = name;
    this.age = age;
    this.write = function() {
        console.log(name, age);
    }
}

let p1 = new createPerson('小光', 18);
p1.write();
let p2 = new createPerson('小花', 20);
p2.write();

原型链模式

基于构造函数模式的原型模式解决了方法或属性共有的问题 -> 把实例之间相同的属性和方法提取成公有的属性和方法 -> 想让谁公有就放在prototype上即可

  • 1、每一个函数数据类型(普通函数、类)都有一个天生自带的属性:prototype(原型),并且这个属性是一个对象数据类型的值
  • 2、并且在prototype上浏览器天生给他加了一个属性constructor(构造函数),属性值是当前函数(类)本身
  • 3、每一个对象数据类型(普通对象、实例、prototype …)也天生自带一个属性:proto,属性值是当前实例所属类的原型
  • 4、Object是js中所有对象数据类型的基类(最顶层的类)
  • 5、在Object.prototype上没有__proto__这个属性
function createPerson(name, age) {
    this.name = name;
    this.age = age;
}
createPerson.prototype.write = function () {
    console.log(this);
    console.log(this.name, this.age);
}

let p1 = new createPerson("小光", 18);
p1.write();
let p2 = new createPerson("小花", 20);
p2.write();

console.log(p1.write === p2.write); // true
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值