this:被调用的上下文对象;
apply与call:切换被调用的上下文对象,即 调用时,this被临时性地切换
//demo 1 [call] function forEach(list,callback){ for(var i = 0, len = list.length; i < len; i++){ callback.call(list[i],i);//切换this的上下文对象为:list[i] } } var weapons = ["shuiken","katana","nunchucks"]; forEach( weapons, function(index){ assert(this == weapons[index],"Got value:" + weapons[index]); } );
![](https://images2018.cnblogs.com/blog/1173617/201711/1173617-20171124004723593-1719408235.jpg)
不使用call或者apply时:【目前,并不能看出,使用call,有什么好处】
![](https://images2018.cnblogs.com/blog/1173617/201711/1173617-20171124010219187-1807258817.png)