Çü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.
'$ ('# myId')' bir Array döndürmez. –
Bu, bu proxy nedeniyle bir .toArray() yapmam gerekmediği anlamına mı geliyor? – foreyez
@foreyez: No. 'sort()' 'this', 'push()' uzunluğunu ve 'splice()' yeni bir 'Array'ı döndürecektir. – Bergi