目录
  1. 1. 函数作为返回值
    1. 1.1. 返回值案例
JS高阶函数之函数作为返回值

函数作为返回值

function f1() {
console.log("f1函数开始");
return function () {
console.log("我是返回值的函数");
}
}
var ff = f1();
ff();

//获取某个对象的类型是不是你传入的类型
//[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

返回值案例

采用时间排序:

//排序,每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序

//三部电影,电影有名字,大小,上映时间
function File(name, size, time) {
this.name = name;//电影名字
this.size = size;//电影大小
this.time = time;//电影的上映时间
}

// 创建3个对象,存入数组
var f1 = new File("jack.avi", "400M", "1997-12-12");
var f2 = new File("tom.avi", "200M", "2017-12-12");
var f3 = new File("xiaosu.avi", "800M", "2010-12-12");
var arr = [f1, f2, f3];

function getSort(obj1, obj2) {
if (obj1.time > obj2.time) {
return 1;
} else if (obj1.time == obj2.time) {
return 0;
} else {
return -1;
}
}
// var ff = fn("name");

//函数作为参数
arr.sort(getSort);
for (var i = 0; i < arr.length; i++) {
console.log(arr[i].name + "====>" + arr[i].size + "===>" + arr[i].time);
}

以上可以采用时间进行排序,可是如果我需要使用名字或者大小排序的时候有需要修改getSort方法,这没有达到代码的复用性,因此,对getSort再次进行封装

//排序,每个文件都有名字,大小,时间,都可以按照某个属性的值进行排序

//三部电影,电影有名字,大小,上映时间
function File(name, size, time) {
this.name = name; //电影名字
this.size = size; //电影大小
this.time = time; //电影的上映时间
}
// 创建3个对象,存入数组
var f1 = new File("jack.avi", "400M", "1997-12-12");
var f2 = new File("tom.avi", "200M", "2017-12-12");
var f3 = new File("xiaosu.avi", "800M", "2010-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;
}
}
}
// 对 name 进行排序,如果需要对什么排序 , 传入其属性即可
var ff = fn("name");

//函数作为参数
arr.sort(getSort);
for (var i = 0; i < arr.length; i++) {
console.log(arr[i].name + "====>" + arr[i].size + "===>" + arr[i].time);
}

文章作者: Jachie Xie
文章链接: https://xjc5772.github.io/2020-07/09/%E5%AD%A6%E4%B9%A0/%E5%89%8D%E7%AB%AF%E5%AD%A6%E4%B9%A0/JS/JS%E9%AB%98%E9%98%B6%E5%87%BD%E6%95%B0%E4%B9%8B%E5%87%BD%E6%95%B0%E4%BD%9C%E4%B8%BA%E8%BF%94%E5%9B%9E%E5%80%BC/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 XJC&Blog
打赏
  • 微信
  • 支付宝

评论