求问一个数组sort方法的问题

这个例子是我在网上看到的例子:
<script type="text/javascript"> 
var objectList2 = new Array(); 
function WorkMate(name,age){ 
this.name=name; 
var _age=age; 
this.age=function(){ //我实在是没有看懂这里为什么要添加这样一个方法
if(!arguments) { //如果没有实参传入
_age=arguments[0];} //那-age这个变量就被赋值为实参的第一个
else { 
return _age;} } } //否则返回-age这个变量
objectList2.push(new WorkMate('jack',20)); 
objectList2.push(new WorkMate('tony',25)); 
objectList2.push(new WorkMate('stone',26)); 
objectList2.push(new WorkMate('mandy',23)); objectList2.sort(function(a,b){ 
return a.age()-b.age(); }); 
for(var i=0;i<objectList2.length;i++){ 
document.writeln('<br />age:'+objectList2[i].age()+' name:'+objectList2[i].name); } 
</script>


当中这段我备注的我不知道我理解的对吗 ,麻烦大神帮我看一下。我想问一下这个方法到底有什么用呢?谢谢


Beckybei
浏览 1548回答 1
1回答

pardon110

简而言之,objectList2是一个由构造函数WorkMate生成的实例组成的数组。sort(fn)会按照函数定义的规则进行排序且改变了原有数组sort()对数组的引用。请注意,数组在原数组上进行排序,并不会生成副本。如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。若 a 等于 b,则返回 0。若 a 大于 b,则返回一个大于 0 的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript