JavaScript--单例模式工厂模式 ,以及原型链模式

工厂模式
  • 单例模式虽然解决了分组的作用,但不能实现批量的生产
  • 工厂模式把实现同一间事情的相同代码放到一个函数中,以后如果再想实现这个功能,不需要重新编写这些代码,只需要执行当前的函数即可,也叫–>“函数的封装”
-减少页面中的冗余代码,提高代码的重复利用率–>低耦合高内聚
-面向对象:函数的封装,继承(子类继承父类的方法和属性等,祖传),多态:包括重载和重写,js中只有重写,但是却可以模拟重载.
  • js中有一个操作类似重载但不是重载的,我们可以根据传递参数的不同,实现不同的功能
function sun(num){
if (typeof num ==="undefined"){
return 0;
}
return num;
}
sum(100);
sum();
构造函数模式和工厂模式的区别:
  • 执行的时候
-普通函数执行:createJsPerson()
-构造函数模式:new CreateJsPerson() 通过new执行后,我们的CreateJsPerson就是一个类了,而函数执行的返回值(p1)就是CreateJsPerson这个类的一个实例–>JS中所有的类都是函数数据类型的,通过new执行变成了一个类,但是它本身是一个普通的函数 ->JS中所有实例都是对象数据类型的
  • 在函数代码执行的时候
-相同点:都是形成一个私有的作用域,然后 形参赋值->预解释->代码重上到下执行
-不同点:
->在代码执行之前,不同自己手动创建一个obj对象,浏览器会默认返回一个对象类型的值(这个对象其实就是我们当前类的一个实例)
->接下来代码开始从上到下执行,以当前的实例为执行的主体(this代表的就是当前的实例),然后分别把属性名和属性值赋值给当前的实例
->最后浏览器会默认把创建的实例返回
–>JS中所有的类都是函数数据类型的,通过new执行变成了一个类,但是它本身是一个普通的函数
->JS中所有实例都是对象数据类型的
->p1和p2都是CreateJsPerson这个类的实例,所以都拥有writeJs这个方法,但是不同实例之间的方法是不一样的。在类中给的实例增加的属性(this.xxx = xxx)属于当前实例的私有的实行,实例和实例之间是单独的个体,所以私有的属性之间是不相等的
//console.log(p1.writeJs === p2.writeJs)//false
function Fn(){
var num = 10;// window
this.x = 100
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值