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

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

兼容性

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

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

相关推荐
人工智能训练1 小时前
【极速部署】Ubuntu24.04+CUDA13.0 玩转 VLLM 0.15.0:预编译 Wheel 包 GPU 版安装全攻略
运维·前端·人工智能·python·ai编程·cuda·vllm
会跑的葫芦怪2 小时前
若依Vue 项目多子路径配置
前端·javascript·vue.js
xiaoqi9222 小时前
React Native鸿蒙跨平台如何进行狗狗领养中心,实现基于唯一标识的事件透传方式是移动端列表开发的通用规范
javascript·react native·react.js·ecmascript·harmonyos
jin1233223 小时前
React Native鸿蒙跨平台剧本杀组队消息与快捷入口组件,包含消息列表展示、快捷入口管理、快捷操作触发和消息详情预览四大核心功能
javascript·react native·react.js·ecmascript·harmonyos
烬头88214 小时前
React Native鸿蒙跨平台实现二维码联系人APP(QRCodeContactApp)
javascript·react native·react.js·ecmascript·harmonyos
pas1364 小时前
40-mini-vue 实现三种联合类型
前端·javascript·vue.js
摇滚侠5 小时前
2 小时快速入门 ES6 基础视频教程
前端·ecmascript·es6
2601_949833395 小时前
flutter_for_openharmony口腔护理app实战+预约管理实现
android·javascript·flutter
珑墨5 小时前
【Turbo】使用介绍
前端
军军君016 小时前
Three.js基础功能学习十三:太阳系实例上
前端·javascript·vue.js·学习·3d·前端框架·three