美文网首页细品 JavaScript
初识JavaScript函数Arguments模拟重载

初识JavaScript函数Arguments模拟重载

作者: 越前君 | 来源:发表于2019-03-11 11:10 被阅读0次

    在 JavaScript 中并没有重载函数的功能,但每个函数中的 Arguments 对象可以模拟重载的实现。

    1. 通过下标访问实参:

    arguments 不是一个数组对象,没有数组对象所有的属性和方法,但通过 arguments[0]、arguments[1]...去获取实参。

    function demo () {
      let str = '';
      for(let i = 0; i < arguments.length; i++) {
        str += arguments[i] + ', ';
      }
    }
    console.log(demo('小明', '小红')); // 输出:小明, 小红,
    

    2. 实现重载

    利用 Arguments 对象实现函数重载的方式可以有几种,除了根据参数的个数,还可以根据传入参数的类型、或者利用参数中特殊的参数值来执行不同的操作。

    // 通过参数个数实现重载
    function overloadDemo () {
      switch(arguments.length) {
        case 0: 
          console.log(0);
          break;
        case 1: 
          console.log(1);
          break;
        default: 
          console.log(arguments.length);
          break;
      }
    }
    overloadDemo('name'); // 输出:1
    

    3. callee属性

    Arguments 对象的 callee 属性指向的是正在被执行的Function对象。常常利用该属性实现递归。

    sum(n) {
      if(n==1) {
        return 1;
      } else {
        return n + arguments.callee(n-1);
      }
    }
    console.log(sum(5)); // 输出:15
    

    相关文章

      网友评论

        本文标题:初识JavaScript函数Arguments模拟重载

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