老乡,别走!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 下的不同文档之间相互通信。

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

兼容性

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

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

相关推荐
u0111026753 分钟前
WebP 转成 PNG 后为什么更大?图片格式转换不等于压缩
前端·javascript·vue.js
万少3 分钟前
Qoder sonus模型 20分钟,复刻 马斯克 飞天汽车
前端·后端·算法
java1234_小锋25 分钟前
【技术专题】HTML5 网页技术 - HTML5 列表标签
前端·html·html5
强二小哥帅27 分钟前
Kotlin 协程复习笔记
前端
不可能片场30 分钟前
工程实践 原子替换改了 ctime 怎么修
前端·electron
暧暧内含光30 分钟前
HTTP 文件传输体系全解:从协议标头、OSS 架构到流媒体分片
前端
高晶31 分钟前
Android 文件管理器开发实战指南
程序员·代码规范
静默回滚32 分钟前
浏览器能显示AVIF,却导不出一张AVIF
前端
小皮虾37 分钟前
小程序全局状态还能这么简单?只需初始化一次,页面自动同步
前端·javascript·微信小程序
用户8186180280040 分钟前
RESTful API 设计规范与版本演进
前端