猿问

arr.map(fn,this),this指的是谁

var arr=[2,3,42,1,4,6];

var arr2=arr.map(function(data,index,_this){

    console.log(this);//为什么是window

    return data;

},this);//这里的this指向谁


隔江千里
浏览 687回答 1
1回答

桃花长相依

是调用cb时候的this,对于这种情况下,就是全局对象了,strict模式下好像是undefined吧,如果你传入一个bind以后的cb,这个this应该就是bind调用是传入的上下文了,比如:var obj = {}var arr = [12,123]var cb = (function(){console.log(this)}).bind(obj)var arr2 = arr.map(cb)楼主可以试一试,如果不明白的话,好好看一下js中this值的变化吧!推荐一本you dont konw js,我觉得是我看过的js语法讲的最好的书了不好意思没看太清,楼主问的是传入的this,这个其实就是代替我了上边的那个bind调用,因为一个函数在类似cb这种情况下调用,很多时候this都是指向全局的(例外的有事件处理函数),如果你传入第二个this参数,那么,你的cb中的this就指向了第二个参数,其实就是和传入一个bind之后的函数一个作用。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答