隔江千里
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指向誰(shuí)
1 回答

桃花長(zhǎng)相依
TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超8個(gè)贊
是調(diào)用cb時(shí)候的this,對(duì)于這種情況下,就是全局對(duì)象了,strict模式下好像是undefined吧,如果你傳入一個(gè)bind以后的cb,這個(gè)this應(yīng)該就是bind調(diào)用是傳入的上下文了,比如:
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,我覺得是我看過(guò)的js語(yǔ)法講的最好的書了
不好意思沒(méi)看太清,樓主問(wèn)的是傳入的this,這個(gè)其實(shí)就是代替我了上邊的那個(gè)bind調(diào)用,因?yàn)橐粋€(gè)函數(shù)在類似cb這種情況下調(diào)用,很多時(shí)候this都是指向全局的(例外的有事件處理函數(shù)),如果你傳入第二個(gè)this參數(shù),那么,你的cb中的this就指向了第二個(gè)參數(shù),其實(shí)就是和傳入一個(gè)bind之后的函數(shù)一個(gè)作用。
添加回答
舉報(bào)
0/150
提交
取消