2012-06-08 15 views
24

मैं कई उदाहरण देख रहा हूं जहां लोग jQuery में .sort() फ़ंक्शन का उपयोग करते हैं।jQuery .sort() दस्तावेज़ीकरण कहां है?

इसलिए उदाहरण के लिए

:

$('#myId').sort(..); 

करके मैं jQuery एपीआई में sort() के लिए किसी भी प्रलेखन नहीं मिल रहा है, किसी को भी मुझे इसे को इंगित कर सकते हैं?

उत्तर

22

क्योंकि यह 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 का उपयोग करने का एक उदाहरण है।

+0

'$ ('# myId')' एक ऐरे वापस नहीं करता है। –

+0

क्या इसका मतलब है कि मुझे इस प्रॉक्सी के कारण .toArray() करने की आवश्यकता नहीं है? – foreyez

+1

@foreyez: नहीं। 'Sort') '''',' push() 'लंबाई और' splice() 'एक नया 'ऐरे' वापस कर देगा। – Bergi

संबंधित मुद्दे