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

鍍金池/ 問(wèn)答/HTML/ js 中this調(diào)用的丟失,方法名調(diào)用和方法名()調(diào)用有什么區(qū)別

js 中this調(diào)用的丟失,方法名調(diào)用和方法名()調(diào)用有什么區(qū)別

var obj = {
  id: 'awesome',
  cool: function coolFn() {
    var _scope = this;
    console.log(_scope.id);
  }
}

var id = 'not awesome';
obj.cool();

 **// 為什么下面這兩段調(diào)用的結(jié)果不一樣, this 的指向問(wèn)題**
// 為什么obj.cool,和obj.cool()有什么不同,結(jié)果也是不一樣的
setTimeout(obj.cool,100) // not awesome
setTimeout(obj.cool(),100) // awesome 
回答
編輯回答
挽歌

定時(shí)器的第一個(gè)參數(shù)為一個(gè)函數(shù),或一段代碼塊(如"console.log('a')"),當(dāng)參數(shù)為函數(shù)時(shí),函數(shù)中的this將指向window,解決:setTimeout(obj.cool.bind(obj),100)或者setTimeout(function(){obj.cool()},100)

至于第二個(gè)定時(shí)器在讀到這句的時(shí)候會(huì)立即執(zhí)行obj.cool(),也就是打印一次awesome,然后將字符串a(chǎn)wesome作為定時(shí)器的第一個(gè)參數(shù),這不是一個(gè)函數(shù)或一段可執(zhí)行的代碼塊,所以這個(gè)定時(shí)器觸發(fā)的時(shí)候會(huì)報(bào)錯(cuò)

2017年11月3日 05:08
編輯回答
生性

這個(gè)是this的隱式綁定和隱式丟失問(wèn)題。
一般地,被直接對(duì)象所包含的函數(shù)調(diào)用時(shí),也稱為方法調(diào)用,this隱式綁定到該直接對(duì)象;
隱式丟失是指被隱式綁定的函數(shù)丟失綁定對(duì)象,從而默認(rèn)綁定到全局對(duì)象或者undefined上。
你這是因?yàn)閰?shù)傳遞導(dǎo)致了隱式賦值。
可以看看這個(gè)文章傳送門和小黃書上冊(cè)85面

2018年1月16日 00:05