чтобы представить, что внутри call, можно перезаписать его так:
Function.prototype.call = function (thisObj) {
return this.apply(thisObj, Array.from(arguments).slice(1));
};
тоесть call вызывает свой this
func1.call(…) //внутри call this → func1
func1.call.call(func2) //последний call меняет this первого на func2
никакого специального поведения для call.call нет