在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
答案 0 :(得分:14)
答案在您链接到的文档中:
也可以通过this关键字访问该值,但是 Javascript将始终将此值包装为Object,即使它是 一个简单的字符串或数字值。
当以this
访问时,所有值都嵌入到对象中。
真正的原因可以在jQuery source的这一行中找到:
callback.call( obj[ i ], i, obj[ i++ ] ) === false ) {
您可以将其与
进行比较(function(){console.log(this)}).call(1);
构建Number
,因为你不能在不是对象的东西上调用函数。
thisArg :
请注意,这可能不是该方法看到的实际值:如果是 method是非严格模式代码中的函数,null和undefined将 被全局对象替换,原始值将被替换 装箱。
使用this
代替valueOfElement
时,我会看到的唯一优势是:
this
是原始类型,也可以直接在valueOfElement
上使用函数答案 1 :(得分:0)
this
关键字将作为JavaScript对象访问该元素。您可以像使用任何其他JavaScript对象一样获取它的值,或者可以将其包装($(this)
)以使其成为jQuery对象。