我知道如何使用 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/