2012-06-08 34 views
24

İnsanların jQuery'de .sort() işlevini kullandığı birçok örnek arıyorum. Yani, örneğinjQuery .sort() Burada belge nedir?

: I By

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

jQuery API içinde sort() için herhangi bir belge olamaz, herkes beni kendisine işaret edebilir?

cevap

22

Çünkü jQuery'nin bir parçası değil (resmi olarak), ancak bir proxy olan Array.sort.

Derek'in işaret ettiği gibi, jQuery(...) bir dizi döndürmez. Aksine, jQuery adds a proxy jQuery nesnesi "bir dizi gibi davranıp" yapmak için: Bir işlevde this fonksiyon çağrıldığı nesneye göre belirlenir, çünkü bu vekil çalışır

// For internal use only. 
// Behaves like an Array's method, not like a jQuery method. 
push: push, 
sort: [].sort, // <-- here 
splice: [].splice 

. Ve ayrıca, Array.sort (ve Array.splice), "dizi gibi" olan herhangi bir this üzerinde çalışır (length ve muhtemelen 0..length-1 özelliklerine sahiptir). "Dahili kullanım için sadece" notlar şu

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: Burada Array.sort kullanarak özel bir nesne [AB] örneğidir.

+0

'$ ('# myId')' bir Array döndürmez. –

+0

Bu, bu proxy nedeniyle bir .toArray() yapmam gerekmediği anlamına mı geliyor? – foreyez

+1

@foreyez: No. 'sort()' 'this', 'push()' uzunluğunu ve 'splice()' yeni bir 'Array'ı döndürecektir. – Bergi