JS/TS笔记学习1

周末总得学点什么吧~
奥利给!

  • 跑火车 递归 减速
let currentIndex = 0;  
let speed = 500; // 初始速度,单位是毫秒  
let decrement = 20; // 每次迭代速度减少的量  const cells = document.querySelectorAll('.cell');  function highlightCell() {  cells.forEach((cell, index) => {  cell.classList.remove('highlight');  if (index === currentIndex) {  cell.classList.add('highlight');  }  });  if (speed > 50) { // 当速度降低到一定程度时停止  speed -= decrement;  setTimeout(highlightCell, speed);  currentIndex = (currentIndex + 1) % cells.length; // 移动到下一个格子  }  
}  highlightCell(); // 开始跑火车
  • 队列
/*** 将弹窗加入弹出窗队列* @param {string} panelPath * @param {string} scriptName * @param {*} param */public pushToPopupSeq(panelPath: string, scriptName: string, param: any) {let popupDialog = {panelPath: panelPath,scriptName: scriptName,param: param,isShow: false};this._arrPopupDialog.push(popupDialog);this._checkPopupSeq();}/*** 检查当前是否需要弹窗*/private _checkPopupSeq() {if (this._arrPopupDialog.length > 0) {let first = this._arrPopupDialog[0];if (!first.isShow) {this.showDialog(first.panelPath, first.param);this._arrPopupDialog[0].isShow = true;}}}/*** 将弹窗从弹出窗队列中移除* @param {string} panelPath */public shiftFromPopupSeq(panelPath: string) {this.hideDialog(panelPath, () => {if (this._arrPopupDialog[0] && this._arrPopupDialog[0].panelPath === panelPath) {this._arrPopupDialog.shift();this._checkPopupSeq();}})}
  • ts给readonly属性赋值
    除了在声明它的类或构造函数内部被赋值,有些情况下(静态只读)可能需要赋值
class TweenSystem {  static readonly instance; // 声明静态只读属性  如何赋值呢??? 请看下面  // ... 其他代码保持不变 ...  public getNum(){console.log(123);}
}
//这种情况如何赋值只读属性呢,看下面
// 在类外部初始化 instance  
(TweenSystem.instance as any) = new TweenSystem();  
// 现在可以正确访问了  
const actionMgr = TweenSystem.instance;
actionMgr.getNum();   //123

那么为什么as any后就可以赋值(TweenSystem.instance as any);
TweenSystem.instance as any 的情况下,通过类型断言将 TweenSystem.instance 的类型临时转换为 any,从而能够给它赋值。尽管这样做在技术上是可行的,但它破坏了 TypeScript 的类型安全原则,并可能导致运行时错误或难以追踪的 bug。
通常,不建议使用类型断言来修改 readonly 属性,除非有非常明确的原因,并且完全理解可能带来的后果。如果需要在类的外部初始化 readonly 属性,更好的做法是在类的内部进行初始化

  • 单例模式
class Singleton {  // 使用一个私有的静态实例变量来存储类的唯一实例  private static instance: Singleton | null = null;  // 构造函数是私有的,这样外部就无法使用 new Singleton() 来创建新的实例  private constructor() {  // 初始化代码(如果有的话)  }  // 提供一个静态方法来获取类的唯一实例  // 如果实例不存在,则创建它  public static get getInstance(): Singleton {  if (Singleton.instance === null) {  Singleton.instance = new Singleton();  }  return Singleton.instance;  }  // 类的其他方法或属性  public someMethod() {  console.log("这是 Singleton 类的一个方法");  }  
}  
// 使用示例  
const singletonInstance = Singleton.getInstance;  
singletonInstance.someMethod(); // 调用 Singleton 类的方法   //out: 这是 Singleton 类的一个方法

而有些情况下也可以直接这样

class Singleton1 {  static readonly instance = new Singleton1();  // 构造函数是私有的,这样外部就无法使用 new Singleton1() 来创建新的实例  private constructor() {  // 初始化代码(如果有的话)  console.log("在编译完就直接创建了,不管你有没有调用")}// 类的其他方法或属性  someMethod() {  console.log("这是 Singleton1 类的一个方法");  }  
}  // 使用示例  
const Singleton1Instance = Singleton1.instance;  
Singleton1Instance.someMethod(); // 调用 Singleton1 类的方法

在这里插入图片描述
区别就在于编译后直接创建了单例,但基本上很少采用这种

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/308696.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的锁策略,synchronized优化过程和cas过程

1. 常见的锁策略 所谓"策略",也可以理解为做法."锁策略"就是用来描述一把锁面对加锁/解锁时的做法. 1.1 乐观锁 vs 悲观锁 要区分一把锁是乐观锁还是悲观锁,就要预测当前这把锁冲突的概率高不高. 如果冲突概率高,后续要做的工作往往会更多,加锁的开销就…

使用阿里云试用Elasticsearch学习:4. 聚合——2

近似聚合 如果所有的数据都在一台机器上,那么生活会容易许多。 CS201 课上教的经典算法就足够应付这些问题。如果所有的数据都在一台机器上,那么也就不需要像 Elasticsearch 这样的分布式软件了。不过一旦我们开始分布式存储数据,就需要小心…

Docker 安装 RocketMQ

目录 一、新建两个配置文件 1.1 创建docker-compose.yml文件 1.2 .新建broker.conf文件 二、运行 三、可视化界面 一、新建两个配置文件 1.1 创建docker-compose.yml文件 version: 3.5 services:rmqnamesrv:image: foxiswho/rocketmq:servercontainer_name: rmqnamesrvports…

用html写一个雨的特效

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>雨特效</title><link rel"stylesheet" href"./style.css"> </head> <body> <div id"wrap-textu…

43岁百亿千金夫妇国外旅游高调放闪,羡煞好友马国明

萧正楠早前忙着拍摄TVB新剧《奔跑吧&#xff01;勇敢的女人们》&#xff0c;剧集煞科后他即和老婆黄翠如一起到意大利旅行。两公婆分别在IG大晒旅行靓相&#xff0c;甜蜜满泻。 这次萧正楠的旅游照都是由翠如亲自操刀拍摄&#xff0c;相中所见&#xff0c;萧正楠在广场大摆Chok…

竞赛 协同过滤电影推荐系统

文章目录 1 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

AI人工智能讲师大模型培训讲师叶梓 大语言模型(LLM)在科学文献摘要领域的应用

大语言模型&#xff08;LLM&#xff09;在科学文献摘要领域的应用是一个前沿且迅速发展的技术趋势。通过结合GitHub上yobibyte的Compressor项目&#xff0c;我们可以深入探讨这一技术方案的潜力和实现方式。 技术背景 随着科学研究的快速发展&#xff0c;每天都有大量的科学文…

【软考中级】软件设计师考点分布

文章目录 软考官网资格设置软考报考流程 【软件设计师】考点分布选择题考点分布案例题考点分布 软考官网 中国计算机技术职业资格网&#xff1a;https://www.ruankao.org.cn/ 官网报名平台&#xff1a;https://bm.ruankao.org.cn/sign/welcome 资格设置 计算机软件计算机网…

QT常用控件

常用控件 控件概述QWidget 核⼼属性核⼼属性概览enabledgeometrywindowTitlewindowIconwindowOpacitycursorfonttoolTipfocusPolicystyleSheet 按钮类控件Push ButtonRadio ButtionCheck Box 显⽰类控件LabelLCD NumberProgressBarCalendar Widget 输⼊类控件Line EditText Edi…

MemberPress配置和使用会员登录页面

目录 隐藏 创建会员登录页面 编辑登录页面 设计您的登录页面 链接到您的登录页面 创建会员登录页面 要创建MemberPress会员登录页面&#xff0c;您需要做的就是导航到 MemberPress > 设置 > 页面选项卡&#xff0c;然后在页面顶部附近的“MemberPress 登录页面”…

计算机网络——ARP协议

前言 本博客是博主用于复习计算机网络的博客&#xff0c;如果疏忽出现错误&#xff0c;还望各位指正。 这篇博客是在B站掌芝士zzs这个UP主的视频的总结&#xff0c;讲的非常好。 可以先去看一篇视频&#xff0c;再来参考这篇笔记&#xff08;或者说直接偷走&#xff09;。 …

微服务边车模式深度解析:赋能云原生应用的终极指南(自己搞一个简单SideCar?)

什么是SideCar? Sidecar模式定义&#xff1a; Sidecar 模式是一种常用于微服务架构中的设计模式&#xff0c;该模式允许将应用程序的核心功能与辅助功能&#xff08;如日志记录、监控、配置管理、网络通信等&#xff09;分离开来。在这种设计模式中&#xff0c;每个微服务主容…

快团团团长如何设置起购金额?新手教程免费学!

一、功能说明 部分团长有最低起送价的需求&#xff0c;这时可以通过设置起购金额来规定团员的最低起购价。 二、具体操作步骤 &#xff08;一&#xff09;如何设置起购金额&#xff1f; 在团购设置中&#xff0c;点击“更多团购设置”&#xff0c;在“其他设置”中找到“起购…

vue3使用jsQR解析二维码

1.了解jsQR jsQR是一个纯javascript脚本实现的二维码识别库&#xff0c;不仅可以在浏览器端使用&#xff0c;而且支持后端node.js环境。jsQR使用较为简单&#xff0c;有着不错的识别率。 2.效果图 3.二维码 4.下载jsqr包 npm i -d jsqr5.代码 <script setup> import …

每日一题(leetcode209):长度最小的子数组--滑动窗口

由于是区间问题&#xff0c;考虑到使用滑动窗口。 下面是我刚开始写的代码&#xff0c;虽然能通过&#xff0c;但是思维紊乱&#xff0c;循环条件应该去盯着满足情况下的条件&#xff0c;然后每次都去比较最小值&#xff0c;这样比较简洁。 class Solution { public:int minS…

卷积神经网络结构组成与解释

卷积神经网络结构组成与解释 卷积神经网络是以卷积层为主的深度网路结构&#xff0c;网络结构包括有卷积层、激活层、BN层、池化层、FC层、损失层等。卷积操作是对图像和滤波矩阵做内积&#xff08;元素相乘再求和&#xff09;的操作。 1. 卷积层 常见的卷积操作如下&#x…

比特币减半后 牛市爆发

作者&#xff1a;Arthur Hayes of Co-Founder of 100x 编译&#xff1a;Qin jin of ccvalue (以下内容仅代表作者个人观点&#xff0c;不应作为投资决策依据&#xff0c;也不应被视为参与投资交易的建议或意见&#xff09;。 Ping PingPing&#xff0c;我的手机发出的声音&…

Servlet(一)

文章目录 1.Servlet整体框架2.Servlet快速入门1.创建项目配置基本环境2.添加jar包1.在WEB-INF下创建目录lib&#xff0c;添加文件2.添加到项目中3.配置代码提示 3.src下创建文件4.实现Servlet接口5.在web.xml配置HelloServlet6.通过浏览器访问HelloServlet 3.浏览器访问Servlet…

系统架构最佳实践 -- 供应链系统架构

供应链系统是现代企业管理中不可或缺的一部分&#xff0c;它涉及到从原材料采购到产品销售的整个生产流程。一个高效的供应链系统可以帮助企业实现成本控制、库存优化和客户满意度提升等目标。在本文中&#xff0c;我们将讨论供应链系统的设计与实践。 一、供应链系统设计 业务…

前端开发攻略---Vue通过自定义指令实现元素平滑上升的动画效果(可以自定义动画时间、动画效果、动画速度等等)。

1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 3、关键API IntersectionObserver IntersectionObserver 是一个用于监测元素是否进入或离开视口&#xff08;viewport&#x…