函数作为返回值

//获取某个对象的类型是不是你传入的类型
//[10,20,30]是不是"[object Array]"
//type------是变量----是参数-----"[object Array]"
//obj-----是变量-----是参数-----[10,20,30]
function getFunc(type) {
return function (obj) {
return Object.prototype.toString.call(obj)===type;//判断这个对象的类型和传入的的类型是不是同一个类型
}
}
var ff=getFunc("[object Array]");
var result=ff([10,20,30]);
console.log(result);//true

var ff1=getFunc("[object object]");
var dt=new Date();
var result1=ff1(dt);
console.log(result1);//false



案例:
排序:
var arr=[1,3,5,7,9,2,4,6,8];
//排序---函数作为参数使用,匿名函数作为sort方法的参数使用,那么此时匿名函数中有两个参数
arr.sort(function (obj1,obj2) {
if(obj1>obj2){
return 1;
}else if(obj1==obj2){
return 0;
}else {
return -1;
}
});
console.log(arr);


var arr2=["bdef","abcd","bcde","acde"];
arr2.sort(function (a,b) {
if(a>b){
return 1;
}else if(a==b){
return 0;
}else {
return -1;
}
});
console.log(arr2);




//三部电影,有名字,大小和时间
function File(name,size,time) {
this.name=name;
this.size=size;
this.time=time;
}
var f1=new File("jak.avi","400M","1996-12-12");
var f2=new File("tak.avi","200M","2006-12-12");
var f3=new File("xak.avi","600M","2016-12-12");
var arr=[f1,f2,f3];
function fn(attr) {
//函数作为返回值
return function getSort(obj1,obj2) {
if(obj1[attr]>obj2[attr]){
return 1;
}else if(obj1[attr]==obj2[attr]){
return 0;
}else {
return -1;
}
}
}
var ff=fn("name");//===============
arr.sort(ff);
for(var i=0;i<arr.length;i++){
console.log(arr[i].name+"====="+arr[i].size+"====="+arr[i].time);
}
posted @ 2018-12-07 13:41  lujieting0  阅读(305)  评论(0编辑  收藏  举报