简单刨析JS中Call()的执行原理
最近发现许多同学反映对于call这个函数的理解总是一头雾水,其实如果简单梳理call的执行思路,就会发现,其实并不是那么晦涩难懂,在这篇文章中,会用最能让人理解的"人话",帮助大家理解这个函数,但是注意,这并不等于我在刨析call的源码。
首先我们要明白,call的作用是什么,其实很简单,就是把调用call方法的对象所传递的形参变成方法的this,熟读一下三句话就能明白了:
// 把当前调用的对象以类似属性名的方式放在参数中
// 谁调用,this就是谁,所以参数反客为主成为this,并且执行调用者
// 执行后把调用者删除
// delete obj.fn;
如下图所示:
!!谨记,如果出现两个及以上的call,最后就会让传进去的实参执行
类似这种: