jQuery(); //[]
jQuery("#footer"); //[<div id="footer">...</div>]
我知道,你可以做這樣的事情:jQuery如何使返回值看起來像一個數組?
function kablam(tag) {
var els = document.getElementsByTagName(tag);
els.isKablam = true;
return els;
}
var body = kablam("body"); //[<body class="ask-page">...</body>]
body.isKablam; //true
返回這是一個從document.getElementsByTagName
返回NodeList
的「擴展」版本。
但是,jQuery的做法相反。它將結果合併到自身中(可以看到here和here)。此外,這也無法解釋當你通過什麼給它如何返回一個類似數組的對象,也就是說,看起來樣的陣列:
jQuery(); //[]
當你這樣做,jQuery的只是返回本身。 (source)
或同一延長,當您選擇body標籤:
jQuery("body"); //[<body class="ask-page">...</body>]
(source)
或者,想起來了,什麼都:
var o = {}, body = document.getElementsByTagName("body");
jQuery.merge(o, body); //Object, not [...]
返回數組類似的對象是非常容易的,因爲分配數字鍵是微不足道的,與分配任何其他鍵沒有區別。但jQuery如何使它看起來像一個數組?
我很確定'.push'不需要:) –
另外,它不需要在原型上。在控制檯中試試這個:'a = {length:0,splice:function(){}}' – Shmiddty