javascript - 传递选择器或对象,将其转换为 jQuery 对象的最佳方法是什么?

标签 javascript jquery performance

我有一个可以传递选择器、对象或 jQuery 对象的函数。我想知道哪种方法将该参数转换为 jQuery 对象更有效?

通过以下示例,我是否会更好:

myFunction = function (obj) {
  var $obj = (obj instanceof jQuery) ? obj : $(obj);
};

或者只是跳过条件并将参数放入 jQuery 中,如下所示:

myFunction = function (obj) {
  var $obj = $(obj);
};

当您将 jQuery 对象放入 jQuery 包装器中时,它仍然是 jQuery 对象。所以我主要想知道这样做是否有成本,而不是在第一个示例中添加测试?

最佳答案

is there a cost to doing that instead of the added test in the first example?

是的,有成本——但不是很大。

source code 跟踪 jQuery 的执行,jQuery 将返回 new jQuery.fn.init(selector, context );

init 函数将检查以下内容:

  • 选择器是否传递了一个字符串? ...
  • 选择器是否传递了 DOMElement? ...
  • 选择器是否传递了函数? ...
  • 以上都不是?然后返回 jQuery.makeArray(selector, this );

反过来,makeArray 将创建一个新数组并合并给定对象的内容(在本例中是一个 jQuery 对象,被视为“类似数组”)。

最后,这个新数组将被返回。

由您决定上述步骤是否会对您的应用程序产生问题,但实际上,上述步骤并不意味着任何类型的性能问题 - 它应该执行得非常快。

关于javascript - 传递选择器或对象,将其转换为 jQuery 对象的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48591700/

相关文章:

javascript - 无法显示通过 ajax 调用获得的数据

visual-studio-2010 - 从 visual studio 负载测试中获取 "Time to first byte"指标

javascript - 在状态对象中使用带有多个键/值对的 React Hooks

javascript - kango 如何在单击上下文菜单时打开弹出窗口

javascript - 如何从 DaterangePicker 获取日期值?

Jquery 自动完成最小长度

c - 如何优化图像像素化程序

node.js - 如何禁用 npm 的进度条

javascript - Angular $http.get 和 Express req.body 为空

javascript - 在 Electron 生成器 react Electron 应用程序后,在 Windows 中出现黑屏