- 博客(47)
- 收藏
- 关注
原创 Vue2怎么正确处理属性增加和删除
Object.defineProperty只能拦截对象属性的读取(get)和设置(set),Object.defineProperty必须深度遍历对象所有属性。无法检测到通过索引设置值(arr[0] = newValue)(push/pop/shift/unshift 等)1.使用Vue.delete或this.$delete。Object.defineProperty需要 。1.使用Vue.set或this.$set。2.使用this.$set修改数组元素。2.创建新对象替换原对象。
2025-05-12 16:13:41
402
原创 js触发隐式类型转换的场景
JavaScript 的隐式类型转换(Implicit Type Coercion)会在某些操作或上下文中自动触发,将值从一种类型转换为另一种类型。
2025-04-11 16:12:07
412
原创 CSS高度坍塌?如何解决?
高度坍塌(Collapsing Margins)是指当父元素没有设置边框(border)、内边距(padding)、内容(content)或清除浮动时,其子元素的 margin 会"溢出"到父元素外面,导致父元素的高度计算不包含子元素的 margin,看起来像是父元素"坍塌"了。
2025-04-11 15:23:54
655
原创 深入解析ES6+新语法:复杂的迭代器与生成器
*(Iterator Protocol)** 是一种标准化的数据访问接口,它要求对象实现一个 `next()` 方法,每次调用返回包含 `{ value, done }` 的对象。- **`value`**: 当前遍历的值- **`done`**: 布尔值,表示遍历是否结束此迭代器通过内部维护的 `index` 状态,逐步遍历数组元素。
2025-03-18 21:19:19
565
原创 强化 CSS 样式优先级的多种方法
在 CSS 中,优先级的计算主要依赖于选择器的权重。权重越高,优先级越高。CSS 选择器的权重计算规则权重的计算是累加的。例如:/* 权重 = 1 (div) + 10 (.box) + 100 (#id) = 111 */
2025-02-12 11:30:26
1174
原创 深入理解 Scoped CSS 的限制及其穿透方法
Scoped CSS 是 Vue 提供的一种强大的样式隔离机制,但在某些场景下会带来限制。通过穿透 Scoped CSS 的方法(如 `:deep()`),我们可以灵活地修改子组件或深层 DOM 的样式。选择合适的穿透方法:- Vue 3 项目:推荐使用 `:deep()` 或 `::v-deep`。- Vue 2 项目:可以使用 `/deep/` 或 `>>>`,但建议尽早迁移到 Vue 3。
2025-02-12 11:13:30
1038
原创 js对象操作常用方法
2.构造函数创建 2.方括号三、添加属性四、删除属性五、判断属性是否存在1.in运算符2.hasOwnProperty方法六、遍历对象属性1.for...in...循环2.Object.keys,Object.values,Object.entries七、深拷贝与浅拷贝1.浅拷贝2.深拷贝八、合并对象Object.assign九、其他方法1.Object.is() 比较两个
2024-09-02 10:21:44
796
原创 前端构建工具 webpack与vite对比
Webpack是一个功能强大的模块打包器,它允许开发者以模块化的方式组织代码,在启动时加载所有相关依赖。Webpack通过Loaders和Plugins提供了丰富的扩展能力,能够实现代码拆分、懒加载、热模块替换(HMR)等功能,以及为开发和生产环境提供不同的配置选项。
2024-08-22 23:31:40
1005
原创 js全局搜索高亮显示
输入想要搜索的内容:对应内容高亮显示:错误实现:1.直接更改body的innerHTML,导致绑定在输入框上的input事件失效这是因为,修改body的innerHTML相当于重写了body里面的输入框,这就相当于创建了另外一个dom对象,之前渲染的dom跟这个新的dom对象没有关系,所以就导致了事件的丢失。2.每次不还原初始状态,导致搜索内容改变后,原来的高亮依然存在所以要在一开始记录初始innerHTML,每次input事件触发后要先还原回初始状态。3.没有考虑到标签名
2024-08-21 18:03:01
565
原创 js 手写图片懒加载插件
利用交叉观察器Intersection Observer实现图片懒加载。自定义插件:暴露一个对象,包含一个install方法。不清楚图片懒加载原理的参考我的上一篇博客。
2024-08-20 22:16:54
473
原创 js面试题 图片懒加载!
若一个页面有大量的图片资源,网页首次打开时,若同时加载完这些资源,需要消耗大量的时间,利用图片懒加载,先加载部分图片,既不会影响用户体验,又能大幅提升首屏加载速度。注:data-* 属性是自定义数据属性,不会影响布局和表现,可以通过DOM元素身上的dataset属性获取,是HTML5引入的新功能。加载:当网页被打开时,浏览器会自动解析img标签,查看src属性,得到图片url,发请求获取图片资源。使用这个API可以更精确地控制懒加载行为,减少滚动事件的直接使用,从而避免潜在的性能问题。
2024-08-20 20:44:43
606
原创 js面试题 diff算法
其中updateChildren方法用到的是首尾指针法。,而不用更新其他数据没发生改变的节点,实现。,并只更新这个虚拟节点所对应的。对比新旧虚拟DOM。地更新真实DOM,进而。
2024-08-18 16:49:20
543
原创 js面试题 数组去重
JavaScript 的Set对象,它是一个只包含唯一值的集合。所以先将数组转化为Set集合,过滤掉重复元素,再用Array.from() 方法还原为数组。
2024-08-18 15:51:48
174
原创 js面试题 异步解决方案
把 需要得到异步任务结果之后才能执行 的内容放进回调函数中,异步任务完成后 调用作为函数参数的callback。那要如何处理这样的异步任务呢?怎样能够得到异步任务执行完的结果再继续接下来的工作呢?需要等待多个Promise的结果怎么办呢?传递给另一个函数,并在被调用函数。回调函数是一种特殊的函数,它。返回的是Promise对象。
2024-08-16 16:00:19
217
原创 js中this的指向以及改变this指向的方法
直接调用全局函数fun(),实际上是window.fun()的简写,调用者是window。1.最外层没有函数包裹,那就是在全局作用域下。this指向.前面的对象。
2024-08-16 11:17:13
267
原创 js深拷贝与浅拷贝
如果我只想复制一个对象而且不想让它对我原来的对象产生影响那该怎么办呢?缺点:对象中值为undefined的属性和对象中的函数无法转化。这个时候,两个引用共同指向一块内存。这样会带来什么问题呢?当一个对象的属性值发生变化时,另一个对象也随之受到影响。JSON.stringify() 将对象转化为字符串。JSON.parse() 将字符串转化为对象。
2024-08-15 22:07:44
275
原创 js怎么判断数据类型
数字、字符串、布尔等基本类型可以由typeof进行判断,复杂数据类型大多都被认为是对象。但是由于Array也是继承于Object的,所以这样是无法精准区分的。注:undefined可以判断,null则被视为空对象。所以我们采用判断其构造函数的方法判断其本身。
2024-08-15 12:12:49
213
原创 js的数据类型与传值和传址
js中的数据类型分为两类数字number,字符串string,布尔boolean,null,undefined,Symbol。注Symbol 是 ES6 引入了一种新的原始数据类型,表示独一无二的值。对象Object,数组Array,函数Function。还有两个特殊的对象:正则RegExp,日期Date。
2024-08-15 11:16:21
259
原创 LeetCode每日一题 跳跃问题
思路:每一步跳跃的长度都只有一个范围,不是固定的长度,这无疑增加了题目的难度,难道要每一种可能的跳法都尝试一下吗?
2023-08-28 22:26:14
175
1
原创 LeetCode 每日一题之 股票求最大利润问题
此时,起点就是整段的局部最低点,起点之后的各点都可以作为卖出点,各求利润然后遇到更大的覆盖就行了;找到下一个起点的方法就是找到下一个比当前起点更低的点。以第一点为第一段的起点,水平画线,再次碰到k线之前为一段。
2023-08-26 22:32:07
482
原创 C++实验课 实现银行叫号器功能 自动滚动+键盘上下左右键移动数字
if (clock() - t2 > 200)//只有读取到按键之后才更新。if (clock() - t1 >= 1000)//一秒更新一次。利用伪双线程实现 包含光标移动 隐藏光标的实现。
2023-04-20 16:31:55
440
原创 C++实验作业三
/在一个显示区域内从上到下按顺序显示5个号码,最开始是1-5。//在一个显示区域内从上到下按顺序显示5个号码,最开始是1-5。if (ch == 224) { //判断是否为方向键。//使用键盘交互与计时器实现该程序,使用容器装载号码。//使用键盘交互与计时器实现该程序,使用容器装载号码。if (ch == 27)//ESC键。if (ch == 32)//空格键。void update()//按时更新 线程。
2023-04-16 19:47:10
429
原创 C++ 实验四 字符串处理
第四次实验:字符串从键盘输入一个字符串s,形如:"abc345def"里面有一个数字字符子串(如上面串中的“345”),将其取出,并且在其数值上 + 100,输出运算结果。
2023-04-03 23:16:01
302
原创 C++ LeetCode每日一题 链表居然可以闭合为环!
if (k == 0 || head == nullptr || head->next == nullptr) { //增强健壮性。// 记给定链表的长度为 n,注意到当向右移动的次数 k≥n 时,我们仅需要向右移动 kmodn 次即可。因为每 n 次移动都会让链表变为原状。= nullptr) { //n用来统计链表结点的个数。// 链表开环后返回。
2023-03-30 19:53:41
155
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人