关于手写call的疑惑

如图,红框内保存this为对象的属性,
接着返回调用赋值参数后的对象属性,
这里有点不大懂
不大懂是怎么改变this指向的同时,确保参数不是传给context的

img

通过如下方式调用你的myCall方法的话:

fnA.myCall(obj, params);

红框第一行:this表示的是fnA这个函数,将fnA赋值给context[fn]上;
红框第二行:

  • 将context[fn]执行,即执行fnA;因为call的目的为了修改fbA函数中this的指向,所以通过context[fn]执行相当于obj.fnA(),修改了fnA内的this指向obj;
  • 如果不使用context[fn]执行,而是使用this(),就相当于是fnA();这样的话fnA内的this指向并没有发生变化;