js设计模式

本文深入探讨JavaScript设计模式,涵盖对象变量收编、链式调用实现、原型及构造函数继承方式、多态应用等核心概念。同时介绍了简单工厂、工厂方法及抽象工厂等创建型模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js设计模式-持续更新

一些设计点
  • 用对象来收编变量(包括函数)。这里的“对象”可以是函数。
  • 为了让每一个对象有『自己的』方法,可以对类的prototype属性来进行定义。
  • 链式使用可以通过在方法中返回this即这个对象本身来实现。
  • 为函数的“祖先”Function添加函数,可以用下面的形式:
      Function.prototype.addMethod = function(name, fn){
      this[name] = fn;
      // return this; 加上一条return,使得这个方法可以被链式调用(链式添加-注意不是链式调用哦),eg. var method = function(){}; method.addMethod('checkName',function(){ }).addMethod('checkEmail',function(){ });
      }
    
    • 为什么不直接在Function.prototype上添加函数呢?答案也是很明显的————别人如果也创建了函数,会被你写的这个函数所污染。
  • 当然,如果习惯使用类的方式,可以将上面的this[name] = fn更改为this.prototype[name] = fn。这种方式在使用时就需要new一个对象来调用方法。
  • 在使用面向对象编程的时候,为了防止忘记写运算符new而造成的错误,应该使用创建对象的安全模式:即在类中判断:this instanceof Book是否为true,如果是的话可以直接构造;如果不是的话return new,用new重新调用。
继承
  • 类式继承(通过原型链继承)
    • SubClass.prototype = new SuperClass()
    • 缺点:由于跟prototype有关,父类中定义的一些属性会变成公交车。
  • 构造函数继承
    • 在子类SubClass中调用:SuperClass.call(this)。即执行父类的构造方法。
  • 组合继承
    • 结合以上两种 但是这样做的话,父类中的构造函数在使用构造函数继承和实现子类原型继承时都被调用,在父类构造函数属性多并复杂的情况下就不值得了。
  • 寄生式直接对一个函数中的过渡对象进行prototype赋值来实现原型继承,并返回新对象
  • 寄生组合式继承
    • 寄生式继承结合构造函数继承。在子类构造函数中调用父类构造函数,而原型继承采用寄生的方式(直接针对父类的prototype对象)
    • ⚠️:这里我们需要将得到的中间对象的constructor设置为它本身。
  • 多继承 可以通过拷贝方法与属性的方式实现。
  • 多态 通过对传递的参数判断决定执行逻辑。
创建型设计模式(处理对象创建的设计模式)
  • 简单工厂模式
    • 创建单一对象
    • 使用一个函数,通过传入参数决定创建的对象并返回该对象。这个叫做工厂。
  • 工厂方法模式
    • 如果要创建很多类的对象,那么简单工厂模式就不再适用了,需要使用工厂方法模式。(当然要是安全的工厂方法)
    • 调用工厂函数时,实际上返回的是通过保存在工厂类prototype里面的各种类的对象。
  • 抽象工厂模式 - “幽灵
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值