繁体   English   中英

jquery.each()-“ this” vs valueOfElement

[英]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

小提琴

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

也可以通过this关键字访问该值,但是Javascript始终会将this值包装为Object,即使它是简单的字符串或数字值也是如此。

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

真正的原因可以在以下jQuery源代码行中找到:

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

您可以将其与

(function(){console.log(this)}).call(1);

它会构建一个Number ,因为您不能在不是对象的对象上调用函数。

MDN调用函数

thisArg

请注意,这可能不是该方法看到的实际值:如果该方法是非严格模式代码中的函数,则null和undefined将被全局对象替换,原始值将被装箱。

我将使用this而不是valueOfElement看到的唯一优点是:

  • 简便性:您不必记住赋予回调参数的顺序
  • 直接在使用功能的能力this即使valueOfElement是原始类型的

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM