
js
文章平均质量分 80
js ECMA
写完这行代码打球去
work life balance
展开
-
新旧方法对比:JavaScript 中改变 `this` 指向的方式详解
JavaScript 提供了多种方式来改变this指向,从传统的callapply和bind到 ES6 引入的箭头函数、ReflectAPI 和Proxy,每种方式都有其独特的应用场景。开发者可以根据需求选择最合适的方式,以编写更简洁、可读性更高的代码。原创 2025-04-02 15:37:24 · 493 阅读 · 0 评论 -
前端通信事件:深入理解 Event Bus 与浏览器通信 API
Event Bus是一种基于发布-订阅模式的通信机制,常用于模块之间的解耦。它是 Node.js 各模块的基石,同时也是前端组件通信的重要手段之一。:通过实现页面与 Service Worker 之间的通信。适合离线缓存和后台任务场景。' });});:允许多个页面共享一个 Worker 实例,用于跨页面通信。' });WebSocket:用于实时通信,适合需要服务器参与的场景。' }));IndexedDB:虽然主要用于存储,但也可以通过轮询或监听变化实现通信。' });原创 2025-04-02 11:50:14 · 703 阅读 · 0 评论 -
深入理解 JSONP:跨域的经典解决方案
JSONP(JSON with Padding)是一种跨域数据请求的解决方案。它的核心思想是利用<script>标签不受同源策略限制的特性,通过动态创建<script>标签来实现跨域请求。JSONP 是一种经典的跨域解决方案,其简单性和兼容性使其在过去的前端开发中占据了重要地位。然而,随着 CORS、反向代理等技术的普及,JSONP 的使用场景逐渐减少。在现代开发中,我们更倾向于选择安全性更高、功能更强大的跨域技术。但了解 JSONP 的原理和实现,仍然是每个前端开发者的必修课。原创 2025-03-28 14:26:01 · 959 阅读 · 0 评论 -
理解 JavaScript 中的迭代协议和迭代器协议
迭代协议允许 JavaScript 对象定义或定制它们的迭代行为。例如,在for...of循环中,哪些值可以被遍历到。let i = 0;},return() {// 解构可迭代对象break;// 迭代一次,执行 return 方法可迭代协议定义了对象如何被迭代,要求实现方法。迭代器协议定义了如何生成一系列值,要求实现next()方法。JavaScript 提供了许多内置的可迭代对象和支持迭代的 API。原创 2025-03-28 06:00:00 · 286 阅读 · 0 评论 -
深入理解 JavaScript 生成器(Generator)(后含async/await实现原理)
生成器是由function*声明创建的特殊函数,它返回一个Generator 对象,该对象符合可迭代协议和迭代器协议。生成器函数可以在执行过程中暂停,并在稍后恢复,其上下文(包括变量绑定)会在恢复时保持不变。生成器是 JavaScript 中非常强大的工具,适用于异步编程、迭代器实现、无限序列生成等场景。通过灵活使用yield和yield*,可以大大提升代码的可读性和可维护性。原创 2025-03-27 15:05:52 · 613 阅读 · 0 评论 -
深入理解 JavaScript 的 `async/await`
是对generator的封装,它隐藏了Promise和迭代器的复杂性,使得异步代码更易读、更易写。可以将理解为一种更高级的generator用法。通过本文的介绍,相信你对的概念、优势以及底层原理有了更深入的理解。希望你能在实际开发中灵活运用它,编写出更优雅的异步代码!原创 2025-03-26 17:36:10 · 659 阅读 · 0 评论 -
居然还不知道防抖和节流?前端性能优化的必备神器!
防抖(Debounce)和节流(Throttle)是前端开发中常用的性能优化技术,主要用于控制高频触发的事件处理函数的执行次数。原创 2025-03-23 21:42:53 · 297 阅读 · 0 评论 -
JavaScript反调试技术详解:如何保护你的网站代码
反调试技术是一系列用于阻止或增加分析JavaScript代码难度的方法。其中一种最流行的技术是使用debugger语句,当开发者打开浏览器的调试工具(如Chrome DevTools)时,会自动触发断点,阻碍代码的顺利审查。当你在浏览某些网站时,打开F12开发者工具后突然发现调试器被触发,浏览器显示类似VM108的脚本中含有debugger语句,这就是反调试技术在起作用。原创 2025-03-10 10:13:35 · 856 阅读 · 0 评论 -
没有与此调用匹配的重载
在开发TypeScript项目时,可能会遇到“没有与此调用匹配的重载”错误。这个错误通常是由于函数或方法的参数类型不匹配引起的。本文将介绍该错误的常见原因,并分别从React和Vue项目的角度说明如何避免该错误。原创 2025-03-09 10:49:58 · 506 阅读 · 0 评论 -
use strict 概念理解篇
严格模式概念理解原创 2023-11-26 20:42:06 · 287 阅读 · 0 评论 -
js if()语句后加与不加{}的区别
话不多说直接上图:浏览器控制台执行语句可以看到:if(true)的时,下面的代码都会执行if(false)时,if语句后面最近的一条语句被跳过执行了;MDN官方截图截图那么,在做项目中到底可不可以省略呢?其实在很多插件中都有这种用法,例如随便找一个 vue-router.js总结当if(condition) 后只有一条语句时,可以直接省略{},但如果有很多语句执行,最好还是加上块语句({ … })将这些语句分组。毕竟容易出错,而且可读性也会很差。找了半天没有发现有官方的具体规范原创 2020-08-06 16:13:12 · 1807 阅读 · 0 评论