簡體   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