javascript - jQuery 的 `$(this)` 为什么以及如何引用正确的节点?

标签 javascript jquery this internals

我知道如何使用 jQuery 的 $(this) 选择器,我也了解 Javascript 中 OOP 的原理。我一直认为它确实有效,因为有人实现了它,但我很想知道它的原因和方式

$(function(){
   $('.foo').each(function(){
      console.log($(this));
   });
});

鉴于此代码。我知道 $('.foo') 找到一组 HTML 元素并返回一个 jQuery 对象,它可以使用 .each(. ..)each() 方法的内部结构可能会调用已作为参数传递的闭包。

但为什么 this 会在闭包内引用特定的 HTML 元素?我一直认为 this 只会引用一个新范围,因为它的包装器已使用 new 实例化。那么如果 this 引用 window 不是更一致吗?

最佳答案

最后,您始终可以使用 .call.apply 在函数中强制使用 this 值。 jQuery 这样做;看看 source of .each :

if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
//                  ^ `this` value

这里,this 值将被设置为元素 (object[i]),计数器 (i) 和元素作为参数传递给您的函数,即 callback

关于javascript - jQuery 的 `$(this)` 为什么以及如何引用正确的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10984516/

相关文章:

javascript - Grunt uglify - 合并文件后更新 src

javascript - HTML CSS如何给元素添加渐变透明度

javascript - 从选定的 tr 中获取特定 css 类的值

javascript - 将 FullCalendar 中的 clientEvents 保存在 MySQL/w PHP 中

dictionary - 如何为正在初始化的表建立索引?

javascript - DIV 内文本的内联 CSS

javascript - 在文本框中加载 ajax 请求

javascript事件循环问题

javascript - 这种继承和原型(prototype)继承是否比直接引用更能提高性能?

javascript - Nightmare JS返回页面状态码