JQuery选择器-完全或优化扫描
JQuery selector - full or optimized scan?
代码示例:
$JK("body *").each(function() { ... });
JQuery是否会在调用each()
之前先填充元素数组,或者有LINQ
风格的优化,以便在DOM树遍历期间调用function
?我猜这个优化可能会(或不会)部署到JS引擎中。如果是这样,人们如何知道它是为这个或那个引擎/浏览器实现的?
它首先构建整个列表。我无法想象如何在浏览器/JavaScript引擎中做到这一点,尽管我猜测可能会使NodeList变得懒惰。
jQuery对象看起来像一个Array实例(它不是,但它试图看起来像),这意味着您可以通过数字索引随机访问元素。要让它变懒可真难。
请注意,现代浏览器支持dom访问函数,这些函数将大量工作推入浏览器内部,因此经常—我想,就像你的选择器一样,它实际上只是
document.getElementsByTagName('body')[0].getElementsByTagName('*')
浏览器将完整的列表返回给jQuery。这就是为什么我提到将NodeList对象设置为lazy的原因,但我仍然认为考虑到JavaScript的语义,这将是相当困难的。
首先填充元素数组。
因为这真的只是javascript和javascript是单线程的(除了web工作者不被使用在这里,不能访问DOM),它是这样发生的:
这个函数调用被执行到完成:
$JK("body *")
函数返回一个jQuery对象。
.each()
方法调用。在该方法中,它迭代DOM元素数组,并为每个DOM元素调用回调函数一次。
相关文章:
- 以可优化的方式使用requirejs加载模板
- 使用优化器在慢速连接上加载main.js时需要js超时
- JavaScript数组优化以提高性能
- React+Redux性能优化与组件ShouldUpdate
- JavaScript尾部调用中的函数是否经过优化
- javascript中的快捷方式融合优化
- 如何优化循环以插入到数据库中
- Css优化谷歌页面速度洞察
- 什么's在javascript'的优化上下文
- JavaScript代码优化-创建可重用类
- 显示使用jquery mobile扫描数据角色=页面上的条形码
- 使用方法将扫描的项目添加到总数中
- 如何优化jquery动画代码
- 颗粒-JavaScript/CSS缩小SIMPLE/ADVANCED优化不起作用
- requirejs优化器错误:未定义窗口
- 如何优化这个jquery循环的执行时间
- 如何在AJAX驱动的应用程序中优化元素绑定
- 用Javascript重新扫描图像
- 如何阻止Netbeans扫描某个文件夹
- JQuery选择器-完全或优化扫描