首页 > 其他分享 >JS常见的设计模式

JS常见的设计模式

时间:2023-08-17 21:44:55浏览次数:29  
标签:function count -- Utils 常见 JS ++ state 设计模式

单例模式

点击查看代码
<script>
        // 单例模式 => 自始至终都只能创建一个对象 让对象唯一存在
        let Wife = (function(){
            class Person{
                constructor(name){
                    this.name = name
                }
            }
            let instance = null
            function getInstance(name){
                // 获取实例的方法
                if(!instance) instance = new Person(name)
                return instance
            }

            // 返回创建实例函数
            return getInstance
        })()

        // 单例模式
        const w1 = Wife("冰冰")
        const w2 = Wife("菲菲")
        console.log(w1); //冰冰
        console.log(w2); //冰冰
        console.log(w1 === w2); //true

    </script>
使用单例模式实现一个简易版的vuex3
<body>
    <button onclick="fn1()">++</button>
    <button onclick="fn2()">--</button>
    <p></p>
    <script>
        // 使用单例模式实现一个简易版的vuex3
        let Utils = (function(){
            // 存储数据的
            let state = {
                count:1
            }
            // 操作数据
            function mutation(payload){
                // 如果payload => increment 我们就让state.count++
                switch(payload){
                    case "increment":
                        state.count++
                        break
                    case "decrement":
                        state.count--
                        break
                }
                // 如果payload => decrement 我们就让state.count--
            }
            // 将数据返回到外部
            function getState(){
                return state   //返回一个对象
            }
            return { //返回两个函数构成的对象
                mutation,
                getState
            }
        })()
        console.log(Utils === Utils);
        // 获取仓库里面的数据源
        function fn(){
            const p = document.querySelector("p")
            // 获取数据源
            p.innerHTML = Utils.getState().count
        }
        fn()

        // 点击++ 让仓库里面的数据++
        function fn1(){
            // 让仓库里面的count++
            Utils.mutation("increment")
            // 渲染到页面
            fn()
        }
        // 点击-- 让仓库里面的数据--
        function fn2(){
            // 让仓库里面的count--
            Utils.mutation("decrement")
            // 渲染到页面
            fn()
        }
    </script>
</body>

组合模式

点击查看代码

策略模式

点击查看代码

观察者模式

点击查看代码

标签:function,count,--,Utils,常见,JS,++,state,设计模式
From: https://www.cnblogs.com/bingMIN/p/17638939.html

相关文章

  • IIS压缩API返回的JSON数据
    安装IIS压缩功能后点击 配置中选择 system.webServer/httpCompression 点击dynamicTypes 添加以下类型,Json和XML会压缩 ......
  • 前端页面常见的布局方式有以下几种
    前端页面常见的布局方式有以下几种1、文档流--内联元素从左往右排列,块级元素从上往下排列。2、float(浮动)布局3、position(定位)布局4、displayinline-block(行向)布局5、margin布局6、display:flex弹性布局7、display:grid栅格布局1、文档流(正常流,也叫文档流)内联元......
  • vue3 vue.config.js配置详解
    //vue.config.js文件是用于VueCLI项目的全局配置的module.exports={  //部署应用包时的公共路径  publicPath:"./",  //生产环境构建文件的目录名(默认为dist)  outputDir:"dist",  //放置生成的静态资源的目录(默认为dist/static),可以修改为public。  assetsDir......
  • SpringBoot操作前端传的Geojson进行空间查询
    SpringBoot操作前端传的Geojson进行空间查询项目说明:项目技术栈:SpringBoot+MybatisPlus+postgresql先上查询SQLSELECT*FROMdemoWHEREST_Intersects(geom,ST_GeomFromGeoJSON('放geojson类型数据'));表结构Controller层packagecom.itcy.postgresql.controller;importco......
  • js前端传json,后台接收‘‘被转为quot使用replace方法替换
    前端解决方案:varjsonstr=datas.replace(newRegExp('"',"gm"),'"')正则参数说明g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。m执行多行匹配。let data=eval('('+jsonString+')');实例1:    jsonstr.replace(newRegExp('"',......
  • centos 安装nodejs
    1.下载nodejshttps://nodejs.org/en/download/如果想下载其他版本点这里:https://nodejs.org/download/release/可以选择下载到本地或者在服务器使用wget下载wgethttps://nodejs.org/download/release/latest-v20.x/node-v20.5.1-linux-x64.tar.gz1.1上传服务器至/usr/l......
  • html、css、js实现的一个简单计算器
    title:html、css、js实现的一个简单计算器date:2023-07-1721:51:46categories:CTF-Web入门description:简易计算器主要代码来自runoob的计算器示例,只是精简了一下,把在js里监听完成的清除输入区也写成了一个函数,点击按钮的时候就自动调用了。这里面是有clear函数的,导致我......
  • JScript 脚本中包含别一个文件
    如何在一个Jscript脚本中包含两外的一个Jscript脚本?可以这样做:var tsvar fso = new ActiveXObject( "Scripting.FileSystemObject" );var ForReading = 1;ts = fso.OpenTextFile("c:\\Scripts\\Functions.js", ForReading);s = ts.ReadAll();eval(s);......
  • 常见的Web安全漏洞有哪些,Web安全漏洞常用测试方法介绍
    Web安全漏洞是指在Web应用程序中存在的可能被攻击者利用的漏洞,正确认识和了解这些漏洞对于Web应用程序的开发和测试至关重要。一、常见的Web安全漏洞类型:1、跨站脚本攻击(Cross-SiteScripting,XSS):攻击者通过向Web页面注入恶意脚本来执行恶意操作,例如窃取用户敏感信息......
  • 设计模式-策略模式
    策略模式(文章目录)什么是策略模式  定义一族算法类,将每个算法分别封装起来,让它们可以互相替换。策略模式可以使算法的变化独立于使用它们的客户端(这里的客户端代指使用算法的代码)为什么要用策略模式  我们知道,工厂模式是解耦对象的创建和使用,观察者模式是解耦观察者和......