自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 vue3获取当前时间与日期格式化

当前时间:{{ currentTime }}

2023-12-12 17:11:25 1449

原创 vue3+element-plus实现上传头像并且刷新后仍存在功能

res.send({ code: 200, msg: '图片上传成功', path: 'http://localhost:3000/' + imgData.file[0].path })const uploadUrl = 'http://localhost:3000/uploadImg';// 图片上传接口的地址。// formData: 表示除了图片之外的普通表单数据。// imgData: 表示上传的图片信息。// 为multiparty配置上传的目录。// 将上传的图片路径传回客户端。

2023-12-12 17:04:42 1407

原创 对泛型的理解

除了用 <T> 表示泛型外,还有 <?> 这种形式。?被称为通配符。

2023-08-22 20:45:28 114 1

原创 ts 中命名空间的理解?

命名空间(在早期版本的 TypeScript 中称为“内部模块”)是一种用于组织和分类代码的 TypeScript 特定方式,使你能够将相关代码组合在一起。命名空间允许将与业务规则相关的变量、函数、接口或类分组到一个命名空间,将安全性分组到另一个命名空间。命名空间内的代码将从全局范围拉入到命名空间范围。这种布局有助于避免全局命名空间中组件之间的命名冲突,并且在与可能使用类似组件名称的分布式开发团队合作时也会有好处。TypeScript 创建一个易于导航的嵌套命名空间层次结构。

2023-08-22 07:29:46 272 1

原创 ts 中抽象类的理解?

在上面的示例中,`Animal` 是一个抽象类,其中包含了抽象方法 `makeSound` 和非抽象方法 `move`。`Dog` 和 `Cat` 类继承了 `Animal` 类,并实现了 `makeSound` 方法。由于 `Animal` 是抽象类,不能直接实例化,因此我们可以通过 `new Dog()` 和 `new Cat()` 创建具体的对象。抽象类通过 `abstract` 关键字进行声明,使用抽象方法来定义接口规范,而不需要提供具体的实现。// 输出: Woof woof!

2023-08-22 07:25:09 158 1

原创 ######理论2

它里面的数据就是一旦创建,就不能再被更改。相比于传统的redux,@reduxjs/toolkit简化了react-redux的使用方式,并提供了一些常用的封装,使得开发者能够快速高效的开发redux应用,而@reduxjs/toolkit与react相结合起来能够使react-redux的使用更加快捷方便。总而言之,`for`循环相对于`forEach`迭代函数在性能上有一些优势,但具体的性能差异会受到多种因素的影响,包括数据量的大小、具体操作的复杂度以及 JavaScript 引擎的优化程度等。

2023-08-19 09:32:15 44

原创 实现一个 myMap方法,可以跟数组 map 方法一样,可以进行数组循环并且可以返回新的数组?

回调函数接收当前迭代的元素值、元素索引和原始数组作为参数,并返回一个新的值。`myMap` 方法将遍历数组,并通过回调函数对每个元素进行处理,将处理后的结果存储在一个新的数组中,并返回该数组。在上面的示例中,我们分别使用 `myMap` 方法将数组中的每个元素翻倍和平方,并将结果存储在新的数组中。// 输出: [1, 4, 9, 16, 25]console.log(doubled);// 输出: [2, 4, 6, 8, 10]

2023-08-16 20:45:56 68 1

原创 typescript 中都有哪些修饰符,说明他们的作用?

publicprivate和protected这三种访问修饰符可以帮助我们控制类成员的访问权限。我们了解了它们的用法和作用范围,以及如何在类的实例化和继承过程中使用它们。希望能够帮助大家更好地掌握 TypeScript 中的访问修饰符,并在实际开发中灵活运用。

2023-08-16 20:43:03 153 1

原创 说说interface和type的区别?

2. 对象类型 vs. 声明类型:interface 主要用于描述对象的形状和结构,通过定义属性名称和类型,但不能直接定义基本类型、联合类型和元组类型等非对象类型。而 type 可以用于定义任意类型,包括对象类型、基本类型、联合类型、交叉类型等。总的来说,interface 更适合用于定义对象的形状、刻画接口规范和类的实现,而 type 则更适合用于灵活地定义各种类型,并进行类型的组合、重命名和转换。类型别名不仅可以用来表示基本类型,还可以用来表示对象类型、联合类型、元组和交集。1、type(类型别名)

2023-08-15 21:51:31 751 1

原创 说说你对函数重载的理解?

参数列表可以通过参数个数、参数类型或参数顺序的不同来进行区分。函数重载是指在编程语言中,可以定义多个同名但参数类型或参数个数不同的函数。编译器或解释器根据调用时传入的参数类型或个数的不同,来确定应该调用哪个重载函数。通过函数重载,我们能够根据不同的参数类型和个数调用相同的函数名,使代码更加简洁明了。同时,函数重载还提供了更好的灵活性,使得函数可以适应不同的参数情况。在上面的例子中,我们定义了三个不同参数列表的`sum`函数。当我们调用`sum`函数时,编译器会根据传入的参数类型和个数来选择合适的重载函数。

2023-08-15 21:31:40 42 1

原创 理论813

Real DOM 是浏览器提供的实际 DOM 结构,它直接映射到网页中的 HTML 元素,当网页中的元素发生变化时,Real DOM 会被更新,这种更新会触发浏览器进行页面重绘和重新布局,因为操作 Real DOM 需要直接对浏览器进行操作,所以性能相对较低。当数据发生变化时,React会通过比较新旧虚拟DOM的差异来计算出最小的DOM操作,然后批量更新到真实的DOM上,减少了对DOM的直接操作,提高了性能。这是React的核心特性之一,称为"声明式编程",通过数据的变化来驱动界面的更新。

2023-08-13 21:40:17 34 1

原创 #封装一个使用递归方式的深拷贝方法deepClone

对于自定义类对象,创建一个空的对象副本,然后递归拷贝每个属性的值。需要注意的是,上述实现中使用了 `copy.copy()` 方法进行浅拷贝操作,对于可变类型(如列表、字典、集合等),需要保证其内部的元素也是可变类型,以实现深拷贝效果。使用递归方式进行深拷贝,可以遍历对象的属性并创建其副本,确保每个引用类型都是全新的对象。通过 `deepClone` 方法拷贝了 `person` 对象,并创建了一个新的 `person_clone` 对象,它们的属性值都是相同的。# 如果是可迭代类型,递归拷贝每个元素。

2023-08-10 19:36:24 76 1

原创 找出数组[1,2,3,4,5,3,2,2,4,2,2,3,1,3,5] 中出现次数最多的数,并统计出现多少次,编写个函数?

console.log(`出现次数最多的数字是 ${result.number},出现了 ${result.count} 次。在这个例子中,数字 2 出现了最多次数,共出现了 5 次。// 使用一个对象来记录每个数字出现的次数。// 遍历数组,统计每个数字的出现次数。出现次数最多的数字是 2,出现了 5 次。// 找出出现次数最多的数字和次数。

2023-08-10 19:34:59 103 1

原创 React 性能优化的手段有哪些?

通过上面初步学习,我们了解到react代码层面工程层面框架机制层面通过这三个层面的优化结合,能够使基于react项目的性能更上一层楼。

2023-08-10 19:33:08 79 1

原创 扩展运算符都有哪些作用,详细介绍一下

总之,扩展运算符在JavaScript 编程中非常有用,可以方便地合并数组、对象、函数参数和返回值等,让代码更加简洁、优雅.使用扩展运算符可以方便地将一个数组或对象作为另一个数组或对象的部分返回值。2.函数的参数传递使用扩展运算符可以方便地将一个数组作为函数的多个参数传。3.对象的合并使用扩展运算符可以方便地将两个对象合并成一个新对象。同时,如果合并的两个对象存在同名属性,后面的对象会覆盖前面的对象。此外,还可以使用扩展运算符将一个数组复制到另一个数组中。

2023-08-09 22:08:12 216 1

原创 说说你对Redux的理解?其工作原理?其实现原理?其工作流程?

整个流程就是借书的用户需要先存在,然后需要借书,需要一句话来描述借什么书,图书馆管理员听到后需要查一下记录本,了解图书的位置,最后图书馆管理员会把这本书给到这个借书人。这种情况下,如果将所有的状态进行集中管理,当需要更新状态的时候,仅需要对这个管理集中处理,而不用去关心状态是如何分发到每一个组件内部的。如果让每个组件都存储自身相关的状态,理论上来讲不会影响应用的运行,但在开发及后续维护阶段,我们将花费大量精力去查询状态的变化过程。的变化,再来取数据,从而间接的实现了这些数据传递的功能。

2023-08-09 19:45:21 80 1

原创 #面向对象编程的方式的理解

2. 继承(Inheritance):继承是指一个类可以从另一个类继承属性和方法,被继承的类称为父类(或基类,superclass),继承的类称为子类(或派生类,subclass)。需要注意的是,上述实现中使用了 `copy.copy()` 方法进行浅拷贝操作,对于可变类型(如列表、字典、集合等),需要保证其内部的元素也是可变类型,以实现深拷贝效果。通过 `deepClone` 方法拷贝了 `person` 对象,并创建了一个新的 `person_clone` 对象,它们的属性值都是相同的。

2023-08-07 20:57:04 39

原创 js类型检验的方式

3. typeof 和 instanceof 的局限性:typeof 和 instanceof 操作符虽然可以用于简单的类型检查,但在处理复杂数据类型时可能不够准确。总结来说,JavaScript 中常用的类型检验方式包括 typeof 操作符、instanceof 操作符和 Object.prototype.toString.call() 方法。它返回一个表示值类型的字符串,例如 "string"、"number"、"boolean"、"object"、"function" 等。

2023-08-06 19:44:31 64

原创 事件循环的理解,以及应用理解

总结来说,事件循环是一种处理异步事件的机制,通过轮询事件队列来检查并执行回调函数。它广泛应用于前端开发、后端开发和桌面应用开发等领域,是实现异步编程的重要工具。

2023-08-06 19:41:49 35

原创 闭包的理解,优点缺点,应用场景

一般函数的词法环境在函数返回后就被销毁,但是闭包会保存对创建时所在词法环境的引用,即便创建时所在的执行上下文被销毁,但创建时所在词法环境依然存在,以达到延长变量的生命周期的目的。是维护它们各自的独立性的,每次调用其中一个计数器时,通过改变这个变量的值,会改变这个闭包的词法环境,不会影响另一个闭包中的变量。中,每当创建一个函数,闭包就会在函数创建的同时被创建出来,作为函数内部与外部连接起来的一座桥梁。例如计数器、延迟调用、回调等闭包的应用,其核心思想还是创建私有变量和延长变量的生命周期。没有自己的局部变量。

2023-08-06 19:38:33 74

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除