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