gpt4 book ai didi

javascript - 为什么 jQuery 选择器函数与原生 DOM 方法相比这么慢

转载 作者:可可西里 更新时间:2023-11-01 02:03:10 25 4
gpt4 key购买 nike

我知道这个话题已经被大体上争论了好几次,但我正在寻找更技术性和更详细的见解,以了解真正发生的事情。

我设计了一系列测试来比较 jQuery 最基本的选择器“#id”和“.class”与各种原生 DOM 方法的速度。

我想要的是确切地找出为什么结果是这样的。

这里是测试:http://jsperf.com/jqueryspeed

值得注意的主要事情是 getElementById 显然是所有方法中最快的。为了比较,我添加了 jQuery('#id') 和 jQuery.fn.init('#id') 作为测试,两者之间的区别在于第一个确实实例化了一个全新的 jQuery 对象,而第二个只运行原型(prototype)函数,因此速度更快。因此,这两者之间的区别是可以理解的。

然而,我不明白的主要区别是 getElementById 的速度与 jQuery.fn.init 的速度之间的巨大差距,jQuery.fn.init 有一个简单的测试来处理一个简单的 ('#id') 请求具体方式,回退到对 getElementById 本身的调用。

那么,为什么在 Chrome 上,这种方法比原生方法慢大约 8 倍,即使它基本上只是它的包装器?

它也比包装的 getElementById $(document.getElementById('#id'))...慢 3-4 倍...

有什么想法吗?

最佳答案

这是我们使用简单的 $('selector')

时 jquery 所经历的代码量

http://james.padolsey.com/jquery/#v=1.10.2&fn=init

如您所见,已完成大量验证、正则表达式匹配、跨浏览器技巧等。

重要的是要认识到 jquery 是一个基于 javascript 构建的库。Javascript 直接在浏览器上执行。而 jquery 在被浏览器执行之前会处理相当多的 javascript 代码。

我个人更喜欢 jquery。我真的不在乎节省那些纳秒。jquery 提供的简单程度是惊人的,本身就是一件艺术品。

关于javascript - 为什么 jQuery 选择器函数与原生 DOM 方法相比这么慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20444882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com