functionfn1(){console.log(1);}functionfn2(){console.log(2);}**fn1.call(fn2);//输出1fn1.call.call(fn2);//输出2**fn1.call(fn2);//输出1我基本上能理解首先fn1通过原型链查找机制找到Function.prototype上的call方法,并且让call方法执行,此时call这个方法中的this就是要操作的fn1。在call方法代码执行的过程过程中,首先让fn1中的“this关键字”变为fn2,然后再让fn1这个方法执行。fn1.call.call(fn2);//输出2我始终没有摸透网上的文章看了不少也没有搞懂反应越乱了我的理解为将fn1.call当作一个整体还是fn1通过原型找到call方法call方法也是函数在通过原型找到call方法并让call执行将fn1.call中的关键字改为fn2并让fn1.call执行此时为什么就变为fn2执行了?
守候你守候我
相关分类