YMM*_*MMD 3 javascript jquery internals this
我知道如何使用jQuery的$(this)选择器,我也理解Javascript中的OOP原理.我总是接受它只是有效,因为其他人实现了它,但我很想知道它为什么以及如何工作.
$(function(){
$('.foo').each(function(){
console.log($(this));
});
});
Run Code Online (Sandbox Code Playgroud)
鉴于此代码.我知道$('.foo')找到一组HTML元素并返回一个jQuery对象,它可以使用它迭代它们.each(...).然后,该each()方法的内部结构可能会调用闭包,该闭包已作为参数传递.
但是为什么this然后引用闭包内的特定HTML元素呢?我一直以为this只会引用一个新的范围,只要它的包装器已经使用实例化new.相反,如果this引用它会不会更加一致window?
最后,您始终可以this使用.call或强制函数中的值.apply.jQuery做到了这一点; 看看来源.each:
if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
// ^ `this` value
Run Code Online (Sandbox Code Playgroud)
这里,this值将被设置为element(object[i]),并且counter(i)和元素作为参数传递给您的函数,即callback.
| 归档时间: |
|
| 查看次数: |
207 次 |
| 最近记录: |