老乡,别走!Javascript隐藏功能你知道吗?

先给前端佬透露,Javascript是最好的语言!有数据为证!

哈哈!来自stackoverflow认证!

言归正传,今天来一些,关于Javascript奇奇怪怪的东西!可能大部分前端佬没有注意,但有些东西用着还挺爽的!

1、FinalizationRegistry

概述

这个是2021年引入的,作用就是当某一个对象被监控后,如果这个对象被垃圾回收机制清理后,就会触发。

这个呢,用来手动释放一些知道不再使用的对象的内存,就很棒呐!或者反过来使用,用来监控某一个对象是否被垃圾回收。

具体使用办法,哥几个还是去MDN(MDN Web Docs)上找找。不举例了哈,后面也是。

兼容性

2、MutationObserver

概述

曾经的前端佬你,有没有想过做一件事情。比如做一个埋点的系统,怎么能埋一个异步的广告图片的点击量?

如果有这个需求的话,曾经的前端佬你,是不是用的就是setInterval?

当然了,还有更牛逼的前端佬用的是Mutation Events。

现在看到这里的前端佬你,可以自豪的说,用这个API就可以了。

它是在DOM之上实现的,能完美的监控到DOM树的增删改!!!

兼容性

3、structuredClone

概述

深度复制一个新的API,它能拷贝的范围很大,几乎涵盖常用的内置对象,如下:

  • 基本类型(number, string, boolean, null, undefined, BigInt, Symbol)
  • 普通对象、数组
  • Date
  • RegExp
  • Map / Set
  • ArrayBuffer, TypedArray, DataView Blob, File, FileList
  • ImageBitmap, OffscreenCanvas

可惜了,几乎俩字几乎要跟它一辈子。比如Function、Error、DOM节点等,还不能支持。

但他有一个很棒的功能,转移对象。

那么使用场景是啥呢?比如一些对象,复制代价很大。比如你定义的vue组件中,有些props数据中的对象中包含vue组件的。那子组件,如果不想造成父组件一改变数据就影响到子组件的数据,就会采取复制一份。这个时候就可以用到这个转移对象了。

转移之后,原有的对象会被清空。

兼容性

4、IntersectionObserver

概述

这玩意,也是绝了。

通俗点来说,是可以用来监控一个元素是否进入/离开可视区域。比如懒加载那功能,图片是否进入可视区域就可以用这个实现。

但远远不止这样,我们可以看看MDN上咋解释:

IntersectionObserver 接口(从属于 Intersection Observer API)提供了一种异步观察目标元素与其祖先元素或顶级文档视口(viewport)交叉状态的方法。其祖先元素或视口被称为根(root)。

当一个 IntersectionObserver 对象被创建时,其被配置为监听根中一段给定比例的可见区域。一旦 IntersectionObserver 被创建,则无法更改其配置,所以一个给定的观察者对象只能用来监听可见区域的特定变化值;然而,你可以在同一个观察者对象中配置监听多个目标元素。

懒加载之类的优化就不说了,比如埋点中,统计某一个广告的曝光时间,是不是用这个也挺爽的?

兼容性

5、BroadcastChannel

概述

这个呢?我们回忆一下之前有一个特效,"量子纠缠"的那个效果。

炫酷吧!

像这样的,各个tab的交互数据,就是通过BroadcastChannel来完成的。

BroadcastChannel的主要功能,就是它允许同源的不同浏览器窗口、标签页、frame 或者 iframe 下的不同文档之间相互通信。

使用场景的话,有待各个前端佬开发了。

兼容性

差不多这样吧,写的很多了。

如果这种有前端佬希望的话,下次再整整别的。

相关推荐
一拳不是超人12 分钟前
DeepSeek Harness 为什么敢说"一切皆插件"?拆透 Cordis 引擎的五大核心机制
前端·人工智能·agent
IT_陈寒24 分钟前
Python的GIL让我多写了500行代码
前端·人工智能·后端
风骏时光牛马24 分钟前
AI智能体能力调度微服务
前端
Eloudy2 小时前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
ZJU_统一阿萨姆3 小时前
【DSH】如何将 DeepSeek Harness 嵌入生产环境?万字解构 DeepSeek Agent Harness 的运行机制与安全边界
前端·javascript·安全
用户921080262863 小时前
4. 前端地图大量点位实时更新优化:后端推增量,前端做 diff
前端
SoaringHeart3 小时前
Flutter最佳实践:Web项目中文字体首次加载乱码问题解决
前端·flutter
西安小哥4 小时前
破局与重生:大厂前端如何借力 AI 转型“超级全栈“
前端·人工智能
sunly_5 小时前
TypeScript总结:16、面向对象速查
前端·javascript·typescript
张元清5 小时前
React useInterval Hook:没有过期闭包的 setInterval (2026)
javascript·react.js