美文网首页
JavaScript中函数的几个成员与高阶函数

JavaScript中函数的几个成员与高阶函数

作者: 东邪_黄药师 | 来源:发表于2018-09-17 14:34 被阅读3次
 //函数中有一个name属性----->函数的名字,name属性是只读的,不能修改
//函数中有一个arguments属性--->实参的个数
//函数中有一个length属性---->函数定义的时候形参的个数
//函数中有一个caller属性---->调用(f1函数在f2函数中调用的,所以,此时调用者就是f2)
function f1(x,y) {
  console.log(f1.name);
  console.log(f1.arguments.length);
  console.log(f1.length);
  console.log(f1.caller);//调用者
}

// f1.name="f5";
// f1(10,20,30,40);
// console.dir(f1);

function f2() {
  console.log("f2函数的代码");
  f1(1,2);
}
f2();

==========================================================
02高阶函数之函数作为参数使用:

  function f1(fn) {
    console.log("f1的函数");
    fn();//此时fn当成是一个函数来使用的
  }
  //fn是参数,最后作为函数使用了,函数是可以作为参数使用
  //传入匿名函数
  f1(function () {
    console.log("我是匿名函数");
  });
  //命名函数
  function f2() {
    console.log("f2的函数");
  }
  f1(f2);
  //函数作为参数的时候,如果是命名函数,那么只传入命名函数的名字,没有括号

    function f1(fn) {
    setInterval(function () {
      console.log("定时器开始");
      fn();
      console.log("定时器结束");
    },1000);
  }

  f1(function () {
    console.log("好困啊,好累啊,就是想睡觉");

===========================================================
03高阶函数之函数作为返回值使用:

           function f1() {
            console.log("f1函数开始");
            return function() {
                console.log("我是函数,但是此时是作为返回值使用的");
            }

        }

        var ff = f1();
        ff();

        var num = 10;
        console.log(typeof num); //获取num这个变量的数据类型
        var obj = {}; //对象
        //判断这个对象是不是某个类型的
        console.log(obj instanceof Object);
        //获取某个对象的数据类型的样子
        //Object.prototype.toString.call(对象);//此时得到的就是这个对象的类型的样子

        //此时输出的是Object的数据类型   [object Object]
        /   console.log(Object.prototype.toString());
        //输出的数组的数据类型      [object Array]
        console.log(Object.prototype.toString.call([]));

        var arr = [10, 20, 30];
        console.log(Object.prototype.toString.call(arr));

        console.log(Object.prototype.toString.call(new Date()));

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

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

============================================================
04函数作为参数的案例:

// var arr = [1, 100, 20, 200, 40, 50, 120, 10];
// //排序
// arr.sort();
// console.log(arr);

var arr = [1, 100, 20, 200, 40, 50, 120, 10];
//排序---函数作为参数使用,匿名函数作为sort方法的参数使用,那么此时的匿名函数中有两个参数,
arr.sort(function (obj1,obj2) {
  if(obj1>obj2){
    return -1;
  }else if(obj1==obj2){
    return 0;
  }else{
    return 1;
  }
});
console.log(arr);

var arr1=["acdef","abcd","bcedf","bced"];
arr1.sort(function (a,b) {
  if(a>b){
    return 1;
  }else if(a==b){
    return 0;
  }else{
    return -1;
  }
});
console.log(arr1);

=============================================================
05函数作为返回值的案例:

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

//三部电影,电影有名字,大小,上映时间
function File(name, size, time) {
  this.name = name;//电影名字
  this.size = size;//电影大小
  this.time = time;//电影的上映时间
}
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;
    }
  }
}

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);
}

相关文章

  • JavaScript中函数的几个成员与高阶函数

    // f1.name="f5";// f1(10,20,30,40);// console.di...

  • JavaScript 高阶函数浅析

    高阶函数 在 JavaScript 中,函数是一种特殊类型的对象,它们是 Function objects。高阶函...

  • JavaScript教程day13-高阶函数

    高阶函数 高阶函数英文叫Higher-order function。javascript的函数其实都指向某个变量。...

  • js 关于高阶函数

    高阶函数英文叫Higher-order function。那么什么是高阶函数? JavaScript的函数其实都指...

  • JS基础回顾:高阶函数

    高阶函数英文叫Higher-order function。那么什么是高阶函数? JavaScript的函数其实都指...

  • react hoc

    一、概念 高阶组件的概念应该是来源于JavaScript的高阶函数:高阶函数就是接受函数作为输入或者输出的函数 高...

  • Java 高阶函数

    一个高阶函数是指 一个函数使用函数作为参数或者执行完返回函数。在高阶函数教程中我将列举几个 Java 高阶函数的例...

  • Python | 高阶函数基本应用及Decorator装饰器

    一、高阶函数 理解什么是高阶函数?以及高阶函数的基本应用方法 ▲ 高阶函数 在了解什么是高阶函数之前,我们来看几个...

  • JavaScript 高阶函数

    高阶函数是将函数作为参数或返回函数的函数。 之所以可以使用 JavaScript 编写高阶函数,是因为函数是值,这...

  • Kotlin学习 5 -- 高阶函数

    本篇文章主要介绍以下几个知识点:高阶函数内联函数noinline 与 crossinline高阶函数的应用内容参考...

网友评论

      本文标题:JavaScript中函数的几个成员与高阶函数

      本文链接:https://www.haomeiwen.com/subject/ahulnftx.html