发布于 2026-01-05 13 阅读
0

6 Killer Functions in JavaScript that Made My Life Easier Thanks for reading

6 个让我的 JavaScript 开发工作更轻松的超强函数

感谢阅读

本文算是对上周发布的《JavaScript 七大杀手级单行代码》的延伸。如果您还没读过那篇文章,强烈建议您先阅读一下。

1. 检查元素是否在视口中可见

IntersectionObserver这是检查元素是否在视口中可见的好方法。

const callback = (entries) => {
  entries.forEach((entry) => {
    if (entry.isIntersecting) {
      // `entry.target` is the dom element
      console.log(`${entry.target.id} is visible`);
    }
  });
};

const options = {
  threshold: 1.0,
};

const observer = new IntersectionObserver(callback, options);
const btn = document.getElementById("btn");
const bottomBtn = document.getElementById("bottom-btn");

observer.observe(btn);
observer.observe(bottomBtn);
Enter fullscreen mode Exit fullscreen mode

您可以使用参数自定义观察者的行为optionthreshold是最有用的属性,它定义了元素需要在视口中可见的百分比,观察者才会触发

2. 检测设备

您可以使用它navigator.userAgent来获取细微的洞察信息并检测运行应用程序的设备。

const detectDeviceType = () =>
  /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
    navigator.userAgent
  )
    ? "Mobile"
    : "Desktop";

console.log(detectDeviceType());
Enter fullscreen mode Exit fullscreen mode

3. 隐藏元素

你可以使用属性切换元素的可见性style.visibility,如果你想将其从渲染流中移除,可以使用style.display属性。

const hideElement = (element, removeFromFlow = false) => {
  removeFromFlow
    ? (element.style.display = "none")
    : (element.style.visibility = "hidden");
};
Enter fullscreen mode Exit fullscreen mode

如果未将元素从渲染流中移除,它将被隐藏,但其占用的空间仍然会被保留IntersectionObserver。这在渲染长列表元素时非常有用,因为可以隐藏不在视图中的元素(可以使用 `show_view` 进行测试) ,从而提升性能

4. 从 URL 获取参数

使用JavaScriptparameters对象,从任何地址获取数据都易如反掌URL

const url = new URL(window.location.href);
const paramValue = url.searchParams.get("paramName");
console.log(paramValue);
Enter fullscreen mode Exit fullscreen mode

5. 轻松深度复制对象

你可以deep copy通过将任何对象转换为字符串,然后再转换回对象来获取它

const deepCopy = (obj) => JSON.parse(JSON.stringify(obj));
Enter fullscreen mode Exit fullscreen mode

6.wait功能

JavaScript确实自带一个setTimeout函数,但它不返回Promise对象,这使得它在项目中难以使用async functions。因此,我们必须编写自己的wait函数sleep

const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

const asyncFunc = async () => {
  await wait(1000);
  console.log("async");
};

asyncFunc();
Enter fullscreen mode Exit fullscreen mode

感谢阅读

需要一位顶尖的软件开发自由职业者来解决您的开发难题吗?请通过Upwork联系我。

想看看我在做什么吗?请访问我的个人网站GitHub。

想联系我?请在领英上联系我。

关注我的博客,即可Medium上获取每两周更新的精彩内容。

常问问题

以下是一些我经常被问到的问题。希望这个常见问题解答部分能解答您的疑问。

  1. 我是新手,应该如何学习前端Web开发?
    请参考以下文章:

    1. 前端热门词汇
    2. 前端开发路线图
    3. 前端项目构思
    4. 从初级前端开发人员过渡到中级前端开发人员
  2. 您愿意指导我吗?

    抱歉,我已经工作很忙了,没有时间指导任何人。

文章来源:https://dev.to/ruppysuppy/6-killer-utility-functions-in-javascript-1j68