在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js箭頭函數this的指向問題?

js箭頭函數this的指向問題?

var a = {
    b: {
        c: {
            d: {
                e: ()=>{console.log(this)} // Window
            }
        }
    }
}

var obj = {
   say: function () {
    console.log(this)
    setTimeout(() => {
        console.log(this)
    });
   }
 }
 obj.say() // obj

為什么第二個會指向obj,而不是window?

回答
編輯回答
逗婦乳

因為第二個是用obj調用的,調用者是obj
this指向的都是調用者
第一個只是執(zhí)行了這段代碼,但是沒有調用者,所以默認就是window
細節(jié)可以看看this

2017年3月7日 01:38
編輯回答
乞許

箭頭函數中的this值是繼承它的外圍作用域的,this在沒改變的情況下是誰調用指向誰,所以say中的this是指向obj 的,箭頭函數中的this繼承這個this,故指向obj

2017年2月5日 03:16
編輯回答
墨小羽

箭頭函數沒有自己的this所以會往外層作用域找

var obj = {
   say: function () {
    console.log(this)//找到了
    setTimeout(() => {
        console.log(this)//沒有this向外層找
    });
   }
 }
2018年5月7日 06:13