我对arguments.callee的理解
Posted pecool
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我对arguments.callee的理解相关的知识,希望对你有一定的参考价值。
基本理解:
你怎么看待一个函数呢?又如何看待一个函数对象呢?函数和Function之间的关系到底是什么?我觉得理解这些对理解arguments.callee有所帮助。
先说说auguments.callee是什么:它是一个指针,它指向当前函数,这个函数没有当前的参数环境,是一个纯净的Function实例,就好比一个厕所,对象只是去厕所撒尿,撒完尿它会出来,厕所还是厕所。
案例说明:
网上找到一个例子,可以很好说明它的用途,怎么看耦合性高低,假如我这样调用 let copy = factorial; factorial = null; copy(3); 一般写法结果是错误的,而升级写法是正确的。使用它还有一个作用,可以直接从函数中获取原型对象。
//一般的写法,缺点耦合性高(红色部分)
function factorial(num){ if (num <=1) { return 1; } else { return num * factorial(num-1) } }
//升级写法,优点耦合性低
function factorial(num){ if (num <=1) { return 1; } else { return num * arguments.callee(num-1); } }
你学到东西了,记得点赞告诉我。
以上是关于我对arguments.callee的理解的主要内容,如果未能解决你的问题,请参考以下文章
二——01Day:对象的索引理解,对象上的this指向,对象转换为字符串,函数的预解析,arguments.callee的用法,