क्योंकि यह jQuery (आधिकारिक तौर पर) का हिस्सा नहीं है, लेकिन यह एक प्रॉक्स Array.sort है।
डेरेक बताते हैं, jQuery(...)
कोई सरणी नहीं लौटाता है। बल्कि, jQuery adds a proxy jQuery वस्तु "एक सरणी की तरह अधिनियम" बनाने के लिए:
// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: push,
sort: [].sort, // <-- here
splice: [].splice
इस प्रॉक्सी काम करता है क्योंकि एक समारोह में this
वस्तु जिस पर समारोह लागू किया गया था द्वारा निर्धारित होता है। और, इसके अलावा, Array.sort
(और Array.splice
) किसी भी this
पर काम करें जो "सरणी" है (length
है और संभावित रूप से 0..length-1
गुण हैं)। "आंतरिक उपयोग के लिए" नोट्स निम्नलिखित
var a = {0: "z", 1: "a", length: 2, sort: [].sort}
a[0] // -> "z"
a.sort() // in-place modification, this === a
a[0] // -> "a"
a instanceof Array // -> false (never was, never will be Array)
YMMV: यहाँ एक कस्टम वस्तु [ab] Array.sort
का उपयोग करने का एक उदाहरण है।
स्रोत
2012-06-08 00:47:47
'$ ('# myId')' एक ऐरे वापस नहीं करता है। –
क्या इसका मतलब है कि मुझे इस प्रॉक्सी के कारण .toArray() करने की आवश्यकता नहीं है? – foreyez
@foreyez: नहीं। 'Sort') '''',' push() 'लंबाई और' splice() 'एक नया 'ऐरे' वापस कर देगा। – Bergi