函数里有什么

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

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

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

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

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

  

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

  

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


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

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

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

posted @ 2020-05-25 00:22  余忧伊  阅读(307)  评论(0)    收藏  举报