工厂模式

将new操作单独封装,遇到new时就要考虑是否可以使用工厂模式。

举例:

class Product {
    constructor(name){
        this.name = name;
    }

    init(){
        console.log(this.name);
    }
    fun1(){
        console.log('fn1'+this.name);
    }
    fun2(){
        console.log('fn2');
    }
}

class Creator{
    create(name){
        return new Product(name);
    }
}

//生成一个工厂
let creator = new Creator();
//外部用时不需要知道p1的构造函数到底是谁,只需要知道creator.create()能生成一个实例
let p1 = creator.create('p1');
p1.init();
p1.fun1();
p1.fun2();
let p2 = creator.create('p2');
p2.init();
p2.fun1();
p2.fun2();
// p1
// fn1p1
// fn2
// p2
// fn1p2
// fn2

jQuery的$('div),React.createElement,Vue异步组件 就是用的工厂模式。

$(‘div’) 和 new $(‘div’)的区别:

new $(‘div’)肯定会报错,没这个用法。

但可以猜想$(‘div’)是工厂模式,而new $(‘div’)不是工厂模式,它是让我们自己去生成一个实例。
new $(‘div’)书写麻烦,而且会让jQuery的链式操作成为噩梦;一旦jQuery名字(构造函数的名字)发生变化,讲师灾难性的。
在这里插入图片描述

这里的window.$就相当于工厂,里面的jQuery才是真正的构造函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值