您的位置:首页 > Web前端 > JavaScript

js:深入函数(函数是对象)

2014-04-29 16:41 309 查看
//由于函数是对象,所以可以直接把函数通过参数传递进来;也可以把函数作为返回值。

function calFun(fun,arg){

//第一个参数就是函数对象

return fun(arg);

}

function sum(num){

return num+100;

}

function say(str){

alert("hello "+str);

}

//调用了say函数

callFun(say,"js"); //hello js

//调用了sum函数

alert(callFun(sum,100)); //200

function fun1(arg){

var rel = function(num){

return arg+num;

}

return rel;

} //返回的是一个函数对象

//f是一个函数对象,可以完成调用

var f = fun1(20);

alert(f); //function(num){return arg+name;}

alert(f(30)); //50

var arr = [1,2,33,12,198];

arr.sort();

alert(arr); //1,12,198,33 对于js而言,默认是按照字符串进行排序的。

//如果我们希望通过数字大小来排序,可以通过如下方式:

function sortByNum(a,b){

return parseInt(a)-parseInt(b);

}

arr.sort();

alert(arr); //1,2,12,33,198

//根据对象来排序

function Person(name,age){

this.name=name;

this.age=age;

}

var p1 = new Person("John",23);

var p2 = new Person("Lemo",39);

var p3 = new Person("Ada",41);

var ps = [p1,p2,p3];

//ps.sort(sortByAge);

//ps.sort(sortByProperty("age"));

function sortByName(obj1,obj2){

return obj1.name>obj2.name?1:(obj1.name==obj2.name?0:-1);

} //按名字排序

function sortByAge(obj1,obj2){

return obj1.age-obj2.age;

} //按年龄排序

//通过上述方法来处理排序,带来的问题是需要为每一个属性创建一个函数,显然不灵活

//但是如果通过函数的返回值调用就不一样了。

function sortByProperty(propertyName){

var sortFun = function(obj1,obj2){

return obj1[propertyName]>obj2[propertyName]?1:(obj1[propertyName]==obj2[propertyName]?0:-1);

}

return sortFun;

}

原创文章如转载,请注明出处,本文首发于csdn网站:/article/11737935.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: