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
NodeList
कि document.getElementsByTagName
से लौटे है की एक "विस्तारित" संस्करण वापस जाने के लिए।
हालांकि, jQuery विपरीत है। यह परिणाम स्वयं में विलीन हो जाता है (जैसा कि here और here देखा जा सकता है)। इसके अलावा, उस की व्याख्या नहीं करता है कि यह कैसे एक सरणी की तरह वस्तु है कि-दिखता है की तरह-एक सरणी देता है जब आप इसे करने के लिए कुछ भी नहीं पारित:
jQuery(); //[]
जब आप कि, jQuery बस में ही रिटर्न है। (source)
या एक ही करने के लिए विस्तार, जब आप बॉडी टैग का चयन करें:
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