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