函数里有什么

1、首先函数内部有俩个特殊对象arguments和this。

2、arguments有一个callee属性,指向拥有arguments对象的这个函数。使用场景通常是用来解耦递归函数。

  function fn(num) {
    if (num <= 1) {
      return 1;
    } else {

      return num * arguments.callee(num - 1);
    }
  }

3、函数这个对象本身还有一个叫caller的属性,这个属性保存着调用当前函数的函数引用。

  函数里有什么_第1张图片

  为了实现更松散的耦合,也可以通过arguments.callee.caller来访问相同的信息。

  函数里有什么_第2张图片

4、每个函数包含着俩个非继承而来的方法:call()和apply(),作用是改变函数体内this的指向,即扩充函数的作用域。
   其中apply()接收俩个参数:第一个参数是在其中运行函数的作用域;第二个参数是函数实参数组(使用时会被拆开),可以是Array的实例,也可以是arguments对象。
函数里有什么_第3张图片


     call()接收多个参数:第一个参数同apply();其余参数都是函数实参。

函数里有什么_第4张图片

5、函数还有一个bind()方法,该方法会创建一个函数实例,其this值会被绑定到传给bind()函数的值。

函数里有什么_第5张图片

6、函数里还有一个原型属性prototype和一个length属性。

你可能感兴趣的:(函数里有什么)