为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

隔江千里 2018-10-16 10:09:34
var arr=[2,3,42,1,4,6];var arr2=arr.map(function(data,index,_this){    console.log(this);//为什么是window    return data;},this);//这里的this指向谁
查看完整描述

1 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

https://img1.sycdn.imooc.com//5bdbe8950001dd6605090418.jpg

是调用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之后的函数一个作用。


查看完整回答
反对 回复 2018-11-02
  • 1 回答
  • 0 关注
  • 686 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号