我收到了關於jQuery架構的另一個問題。 $('div')
構造一個新jQuery
對象:爲什麼可以像查詢數組一樣查詢jQuery('div')?
$('div') instanceof jQuery; // true
我想知道爲什麼它是可以查詢它像一個數組,allthough它不是一個數組?
$('div')[0]; // returns the first div in the document as a DOM node.
$.isArray($('div')); // false
我只是喜歡這種語法,它看起來很乾淨!我也注意到了這個返回DOM節點作爲數組:
console.log($('div'));
有人可以解釋我如何實現這種行爲我自己的對象?
我自己的方法是使一些方法,像這樣的數組:
var a = ['a', 'b', 'c'];
a.method = function(){ return 'test'; };
a; // ['a', 'b', 'c']
a[0]; // 'a'
a.method(); // 'test'
然而,這似乎並沒有被jQuery不會的方式,因爲這實際上是一個數組:
$.isArray(a); // true
我想知道jQuery如何做到這一點學習,看看它是否比我更好的解決方案。
可以使用'[]'符號訪問* *的任何財產。不僅僅是指數。所以就像'$('div')[0]'一樣,你可以執行$('div')['jquery']',這會給你jQuery的版本號。 – 2012-01-09 18:14:10
@amnotiam我知道。但是當我在控制檯中打印常用對象時,它們不輸出數組。 – 2012-01-09 18:14:53
啊,如果你特別要求控制檯的輸出,那麼它確實就是控制檯對你輸入的內容做出最好的猜測。 [jAndy的回答](http://stackoverflow.com/a/8793090/1106925)顯示了控制檯通常會做什麼。 – 2012-01-09 18:16:36