![](https://img-blog.csdnimg.cn/03c715726c6e4e68a8e7f627d9f38034.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
程序百宝箱
日常编码中积累的各种实用代码。
星辰大海-H
学海无涯
展开
-
JavaScript / Typescript深拷贝
JavaScript / Typescript深拷贝函数/** * 深拷贝函数 * @param value 要拷贝的目标 * @param maxDeep 拷贝的深度限制,如果拷贝时深度超过了这个限制,将直接抛出错误 */export default function deepClone<T>(value: T, maxDeep = 10): T { if (maxDeep < 0) throw new Error('deepClone Error: de原创 2022-04-04 15:47:42 · 1953 阅读 · 0 评论 -
JavaScript 自定义事件系统
自定义事件系统下面是一个简单的自定义事件系统,内部提供了(比较)完善的类型推导。继承使用或者直接使用都行。代码实现(Typescript / JavaScript)/** * 自定义事件系统,继承使用 * 添加的事件监听函数listener可以通过返回 remove-listener 字符串来移除自身(类型与“once”参数,但比它要更灵活) */export class AbstractEvent<EListener> { protected readonly _e原创 2022-03-26 19:09:56 · 1364 阅读 · 0 评论 -
循环队列(Typescript/JavaScript)
循环队列的Typescript实现export default class RoundQueue<V> { get [Symbol.toStringTag]() {return 'RoundQueue'} [Symbol.toPrimitive](hint: string): unknown { if (hint === 'string') return `RoundQueue: [ ${this._queue} ]`; else throw n原创 2022-03-24 14:33:54 · 988 阅读 · 0 评论 -
Web前端日志打印工具
游览器控制台日志打印工具测试需要前端将程序执行过程中的各种数据分门别类的输出到控制台。直接用JavaScript的console系列函数并不能很好的满足要求,需要将他们封装一下。ConsoleLog是一个class类,使用前需要实例化,每个ConsoleLog之间是相互独立的,打印日志时互不干扰。要将日志进行分组打印,需要先调用startLog,分组结束后在调用endLog,之后整个分组内容就会作为一个整体被打印到调试控制台。当然如果因为throw Error等导致了没有成功调用endLog,内部也原创 2022-03-24 14:19:36 · 3542 阅读 · 0 评论 -
UUID生成策略/算法(JavaScript / Typescript)
UUID生成策略/算法(JavaScript / Typescript)原创 2022-03-22 19:02:10 · 3517 阅读 · 0 评论