2013-07-02 115 views
1

$(undefined)的返回值是一個對象還是數組?

的的$身體:

return new jQuery.fn.init(selector, context, rootjQuery); 

jQuery.fn.init的粒子主體是:

// HANDLE: $(""), $(null), $(undefined), $(false) 
    if (!selector) { 
      return this; 
    } 

我的理解是:

return new jQuery.fn.init(selector, context, rootjQuery); 
      ~~~~~~~~~~ 
       ^
       | 
       this? 

回答

3

號它與new keyword使用,所以jQuery.fn.並不重要。重要的是它的.prototype,這是jQuery.fn。有關詳細信息,請參見this question

那麼什麼是$(undefined)的返回值?

它是一個從jQuery原型繼承的空對象,所以它與Object.create($.fn)一樣。

0

結果是一個jQuery對象,它不包含任何匹配的DOM元素;即「空」jQuery對象。

0

$(undefined)將返回一個帶有""選擇器的jQuery實例。

自己與這個代碼試試:

var output = ''; 
var jq = $(undefined); 

for(var x in jq) { 
    output += x + ' => "' + jq[x].toString() + '"' + "\n"; 
} 

alert(output); 

樣本輸出會有些這樣的:http://pastebin.com/MwKYFM5w

+0

沒有,空字符串是不是一個真正的選擇 - 它會像'處理undefined' :-) – Bergi

+0

那麼'$(undefined)'將'undefined'截斷成''「''? – 2013-07-02 12:00:10

+0

它們都將被視爲「無選擇器」 - 結果甚至不是一個空集合(具有'length' 0,'context'和'selector'屬性),而是一個沒有任何屬性的空對象。 – Bergi