我应该如何在jQuery中使用.sort()?

for*_*yez 25 javascript jquery

我一直在看很多人.sort()在jQuery中使用这个函数的例子.

例如:

$('#myId').sort(..);
Run Code Online (Sandbox Code Playgroud)

sort()在jQuery API中找不到任何文档,有人能告诉我它的用法吗?

小智 22

因为它不是jQuery(正式)的一部分,而是代理的Array.sort.

正如Derek指出的那样,jQuery(...)不会返回数组.相反,jQuery 添加了一个代理来使jQuery对象"像一个数组":

// For internal use only.
// Behaves like an Array's method, not like a jQuery method.
push: push,
sort: [].sort,    // <-- here
splice: [].splice
Run Code Online (Sandbox Code Playgroud)

此代理有效,因为this函数中的函数由调用函数的对象确定.此外,Array.sort(和Array.splice)可以处理任何this"像数组一样"(有一个length和大概属性0..length-1).以下是使用以下内容的自定义对象[ab]的示例Array.sort:

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)
Run Code Online (Sandbox Code Playgroud)

YMMV遵循"仅供内部使用"的说明.