jquery.each() - "this" vs valueOfElement



在jquery.each()循环中,我一直认为 this等于 valueOfElement。有人可以解释区别吗?

示例:

$.each(object, function(i, val){
    $('body').append('<b>valueOfElement:</b> ' + typeof val + ' - ' +  
    '<b>this: </b>' + typeof this + '<br/>');
});

结果:

valueOfElement: string - this: object
valueOfElement: boolean - this: object
valueOfElement: object - this: object

小提琴

答案在您链接到的文档中:

也可以通过此关键字访问该值,但是 JavaScript始终将该值作为对象包裹起来 简单的字符串或数字值。

访问this时,所有值都嵌入对象中。

真正的原因可以在这条jQuery来源中找到:

callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {

您可以将其与

进行比较
(function(){console.log(this)}).call(1);

构建Number

,因为您无法在不是对象的东西上调用函数。

来自呼叫功能的MDN:

thisarg

请注意,这可能不是该方法看到的实际值:如果 方法是在非图案模式代码中的功能,null和未定义的函数将 被全局对象替换,原始值将是 盒装。

我在使用this而不是valueOfElement时看到的唯一优势是:

  • 简单性:您不必牢记回调的参数顺序
  • 即使valueOfElement为原始类型
  • ,也可以直接在this上使用函数的能力

this关键字将作为JavaScript对象访问该元素。您可以像其他任何JavaScript对象一样获得其值,也可以将其包装($(this))将其制成jQuery对象。

相关内容

最新更新