这个例子是我在网上看到的例子:<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>当中这段我备注的我不知道我理解的对吗 ,麻烦大神帮我看一下。我想问一下这个方法到底有什么用呢?谢谢
1 回答
已采纳
pardon110
TA贡献1038条经验 获得超227个赞
简而言之,objectList2是一个由构造函数WorkMate生成的实例组成的数组。sort(fn)会按照函数定义的规则进行排序且改变了原有数组
sort()对数组的引用。请注意,数组在原数组上进行排序,并不会生成副本。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
添加回答
举报
0/150
提交
取消