js设计模式

article/2025/10/25 16:03:13

js设计模式

1.构造器函数

        function Ema(name, age) {this.name = nameconsole.log(this);//谁调用了this就指向谁this.say=function(){console.log('1')}}let ema1=new Ema('zhangsna1')let ema2=new Ema('李四1')console.log(ema1);//Ema obj {name:'zhangsan1', Fun say}console.log(ema2);//Ema obj {name:'李四1', Fun say}let ema1=Ema('战三')//这是this就指向window  new跟没new的this指向是不同的

构造器模式的优点,可以创建不同的对象并且每个对象的地址不一样
缺点:就是构造器里面的方法其实都是一样的,但是他们都重新开辟了空间,消耗内存

2.原型链构造模式

由于构造器里面的每个函数都重新开启内存消耗性能,如果有100个人1000个调用,消耗内存就有点大了,因此就衍生出了原型链模式

        function Ema(name, age) {this.name = name// console.log(this);//谁调用了this就指向谁//this.say=function(){console.log('1')}提取出来}Ema.prototype.say=function(){console.log(this.name)}let ema1=new Ema('zhangsna1')let ema2=new Ema('李四1')console.log(ema1);//Ema obj {name:'zhangsan1', Fun say}console.log(ema2);//Ema obj {name:'李四1', Fun say}ema1.say();//张三1ema2.say();//李四1

在这里插入图片描述

以上其实用了原型链与构造函数结合的设计模式

3.类构造函数

类构造函数其实就是把原型链跟构造函数和结合起来的成果,constructor 里面相当于构造函数值,
下面的方法相当于原型链

  class Ema {constructor(name, age) {this.name = namethis.age = age + 'sss'this.spaeak22()//直接调用方法this.speak()}speak(){console.log('原型链');}speak22=()=>{console.log('不在原型链');}
}
let ema1 = new Ema('张三', 18)
console.log(ema1);//{name:'张三,age:'18sss} 
//类继承
class Say extends Ema {constructor(name, age) {console.log(name, age);//李四 28 //注意这时候继承的只是Ema的传参并不是计算后的age+ssssuper(name, age)console.log(age);//28// this.age=age+2}say = () => {console.log('不是在原型链');return 222}
}
let say1 = new Say('李四', 28)
console.log(say1);//{name:'李四',age:28sss,say:fun}  //注意这里面为什么是28sss
console.log(say1.say());//222

这里要注意以下几点

  • 在类函数里面不管是不是继承的只要写箭头函数那么就是相当于直接在构造器上会直接看到,如果是普通函数那么就相当于写在原型链里面
  • 类继承中要把需要的参数继承过来不需要的就不要继承,因为如果说你继承过来了,但是你没有使用,并且没有方法改变他,那么他就会找到父类函数去执行,返回的值是父类函数计算后的值
  • 不允许任何数值写在super前面
    在这里插入图片描述

4.工厂模式

   //一个场景什么角色显示什么页面 管理员 对应【主页,编辑页,删除页】vip 【主页,编辑】 游客【主页】class User {constructor(role) {this.role = role}static lookPage(role) {switch (role) {case "admin":return { name: 'admin', page: ['主页', '编辑页', '删除页'] }break;case "vip":return { name: 'vip', page: ['主页', '编辑页'] }break;case "editor":return { name: 'editor', page: ['主页'] }break;default:throw new Error('数据错误')}}}// let admin = new User('vip')// console.log(admin.lookPage());//静态方法的调用let admin =User.lookPage('vip')console.log(admin);//name: 'vip', page: Array(2)

在这里插入图片描述

这里主要讲一个点静态方法,你会发现静态方法,不在构造器里面也不在原型链中,也不在window中,执行里面的静态方法只需要类名.静态方法就行,有知道的小伙伴可以评论,不是静态方法的话需要先new一个实例对象,再执行实例对象点方法

工厂函数的缺点只能维护比较少的参数,如果参数比较多,逻辑复杂工厂函数后期就难以维护

抽象工厂设计模式

这里就是引用的继承方法。然后通过不同的类别去选用不同的构建类,返回的也是不同类型的构建类,工厂模式返回的不同类的实例对象,而这里返回的是类这,里demo太复杂,有兴趣的可以自己查找相关资料,做过大型项目的这点很容易理解


http://chatgpt.dhexx.cn/article/xy7uJjkQ.shtml

相关文章

八大最常用的JavaScript设计模式

八大最常用的JavaScript设计模式 设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目…

JavaScript 设计模式之组合模式

引 我们知道地球和一些其他行星围绕着太阳旋转,也知道在一个原子中,有许多电子围绕着原子核旋转。我曾经想象,我们的太阳系也许是一个更大世界里的一个原子,地球只是围绕着太阳原子的一个电子。而我身上的每个原子又是一个星系&a…

JavaScript设计模式

JavaScript设计模式 设计模式:代码经验的总结,是可重用的用于解决软件设计中一般问题的方案。 设计模式都是面向对象的。 学习设计模式,有助于写出可复用和可维护性高的程序。 常用的12种设计模式: 工厂模式 单例模式 原型模…

JavaScript中常见的十五种设计模式

一、单例模式 二、策略模式 三、代理模式 四、迭代器模式 五、发布—订阅模式 六、命令模式 七、组合模式 八、模板方法模式 九、享元模式 十、职责链模式 十一、中介者模式 十二、装饰者模式 十三、状态模式 十四、适配器模式 十五、外观模式 一、单例模式 1. …

JS 常用的六种设计模式介绍

常用设计模式 前言 我们经常听到一句话,“写代码要有良好的封装,要高内聚,低耦合”。究竟怎样的代码才算得上是良好的代码。 什么是高内聚,低耦合? 即五大基本原则(SOLID)的简写 高层模块不…

git工具统计项目的代码行数

1、git 查看代码的项目总行数 (1)打开Git终端,进入项目的根目录 git log --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s, total lines: %s\n", add,…

小技巧之统计代码行数

欢迎关注我的微信公众号“人小路远”哦,在这里我将会记录自己日常学习的点滴收获与大家分享,以后也可能会定期记录一下自己在外读博的所见所闻,希望大家喜欢,感谢支持! 搞了两个月,连搬带抄写出来的代码&a…

MAC代码下统计代码行数工具

作为一名程序员在很多的时候需要统计代码行数: 支持windows系统的代码行数统计方法以及软件很多,但是MAC系统的统计代码行数的真的不太多。 大家都知道用 wc -l 命令进行代码行数统计,但是它会将代码中的注释、空行所占用的文本行都统计在内…

cloc工具 命令行 统计代码行数

基本用法 :cloc后面跟目录名,文件名,或压缩文件名 例如: cloc ./application 1.安装(参考官网http://cloc.sourceforge.net/#apt-get) 根据操作系统不同,选择以下任意安装方法 sudo npm install -g cloc …

程序代码行数统计

程序写完了,提交著作权的时候不知道代码行数是多少怎么办? 介绍 软件名称兼容系统下载地址代码统计工具Windows软件下载 下面我们开始教程 打开主应用程序点击加号添加程序项目所在的目录点击按钮选择需要统计文件的文件后缀,看个人需求如…

计代码行数cloc,一个代码统计行数很好用的工具

分为window、mac系统区分,基本是一样的,一个代码统计行数很好用的工具。 CLOC简介 Cloc是一款使用Perl语言开发的开源代码统计工具,支持多平台使用、多语言识别,能够计算指定目标文件或文件夹中的文件数(files&#x…

统计代码量-代码统计工具 CLOC | gitlab统计代码量

文章目录 一、代码统计工具 CLOC什么是CLOC?下载安装clocs使用 二、gitlab统计代码量命令行统计图形化统计IDE Statistic统计代码插件 一、代码统计工具 CLOC 什么是CLOC? github: https://github.com/AlDanial/cloc CLOC是Count Lines of Code的意思,可以计算…

Python实现一个代码行数统计工具(以C/C++为例)

前几天在网上看到一个有意思的题,题目是设计一个代码行数统计工具。这类工具我经常会用到,但是具体是如何实现的呢?这个问题我还从未思考过,于是便试着做出这种工具。 题目描述是这样的: 题目要求:   请…

统计项目代码行数工具cloc

Ubuntu用户 使用cloc在ubuntu内统计代码行数 安装cloc工具 sudo apt-get install cloc进入需要统计的目录内,然后执行 cloc .然后就会显示文件目录中的文件数(files)、空白行数(blank)、注释行数(comment)和代码行数(code)。 Windows 用户 也是使用cloc工具 …

Win10 代码行数统计工具CLOC的安装和使用

简介 CLOC(Count Lines of Code),是一个可以统计多种编程语言中空行、评论行和物理行的工具。这个工具还是蛮实用的,可以帮我们快速了解一个项目中代码的信息。 注:底下这个命令可以实现统计代码行数的功能,只是不排除空行和注释…

代码行数统计小工具

一、先下载好SourceCounter小工具。解压,然后直接打开文件夹中的SourceCounter.exe。如果没有找到此工具的下载链接,点这里下载 二、选择代码类型,勾选上所有类型 三、双击点开后,选择文件夹,就可以直接统计出字…

在项目开发中统计代码行数的6种方式

文章目录 一、使用find和wc命令统计代码行数进行参数的过滤筛选命令参数简要说明 二、PowerShell工具统计代码行数条件过滤输出所有文件的行数PowerShell相关命令的简要说明 三、git命令git ls-filesgit log 四、代码编辑器插件五、jscpd六、自己实现一个注释和空行忽略目录和文…

chatgpt赋能python:Python代码行数统计-统计Python代码行数的常用工具与使用方法

Python代码行数统计 - 统计Python代码行数的常用工具与使用方法 Python编程语言是当今最流行的编程语言之一,在数据科学、人工智能、Web应用程序等许多领域都得到了广泛应用。当我们开发Python项目时,我们经常需要统计代码行数以管理代码库并监视进度。…

局域网电脑使用同一台鼠标键盘控制

问题又来了,我现在有两个电脑,局域网相连,但是我只有一套键盘鼠标啊,办公特别不方便,现在有工具可以让我们达到这个目的。 微软推出的 Mouse without Borders (无界鼠标),这是一个免费的工具大家可以放心。下载地址为…

用一套键鼠控制两台主机

自己最近做一个项目涉及到以下场景:需要在一台window10系统的电脑上看一些文档,同时在一台装Ubuntu1804的电脑上跑一些代码。因此需要同时用两套鼠标键盘,切换起来十分麻烦,而且经常会拿错。因此参考博客解决了用一套键鼠控制两台…