箭頭函數(shù)this指向的實(shí)踐

timg.jpg

先上一波代碼福利;(__) 嘻嘻……

<code>
//箭頭函數(shù)表示
function foo(){
console.log(this.id);
return ()=>{
console.log(this.id);
return ()=>{
console.log(this.id);
return ()=>{
console.log(this.id);
}
}
}
}
var f=foo.call({id:1});
f.call({id:2})()();
f().call({id:3})();
f()().call({id:4});
//輸出為10個(gè)1
</code>

<code>
//正常函數(shù)表示
function foo(){
console.log(this.id);
return function(){
console.log(this.id);
return function(){
console.log(this.id);
return function(){
console.log(this.id);
}
}
}
}
var f=foo.call({id:1});
f.call({id:2})()();
f().call({id:3})();
f()().call({id:4});
//輸出為1、2、undefined、undefined、undefined、3、undefined、undefined、undefined、4

</code>

箭頭函數(shù)是沒(méi)有自己的<code>this</code>值,只能繼承外圍作用域,也就是<code>foo</code>。

正常情況下,<code>foo</code>的<code>this</code>指向<code>window</code>,因?yàn)?lt;code>foo.call({id:1})</code>這句代碼,<code>foo</code>的<code>this</code>指向轉(zhuǎn)移到了<code>{id:1}</code>。

所以箭頭函數(shù)中的<code>this.id</code>全部是 1;

而正常函數(shù)中,所有的<code>this</code>指向都是<code>window</code>,經(jīng)過(guò)<code>foo.call({id:1})、f.call({id:2})、f().call({id:3})、f()().call({id:4})</code>

的代碼處理之后,各自<code>this</code>指向都變?yōu)榱俗约褐付ǖ哪莻€(gè)對(duì)象,所以<code>this.id</code>如上面結(jié)果所示。

有說(shuō)的不對(duì)地方歡迎各位指正!

<blockquote>關(guān)于apply、call的使用 http://blog.csdn.net/business122/article/details/8000676</blockquote>
<blockquote>ECMAScript6入門.pdf</blockquote>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,837評(píng)論 18 139
  • 工廠模式類似于現(xiàn)實(shí)生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實(shí)現(xiàn)同樣的效果;這時(shí)候需要使用工廠模式。簡(jiǎn)單...
    舟漁行舟閱讀 7,808評(píng)論 2 17
  • 與其他語(yǔ)言相比,函數(shù)的this關(guān)鍵字在JavaScript中的表現(xiàn)略有不同,此外,在嚴(yán)格模式和非嚴(yán)格模式之間也會(huì)有...
    codingC閱讀 585評(píng)論 0 0
  • 1.函數(shù)參數(shù)的默認(rèn)值 (1).基本用法 在ES6之前,不能直接為函數(shù)的參數(shù)指定默認(rèn)值,只能采用變通的方法。
    趙然228閱讀 704評(píng)論 0 0
  • Javascript 中的 this,有時(shí)候讓人迷惑,所以總結(jié)了一下關(guān)于this指向的問(wèn)題。 在函數(shù)中 this ...
    lxt410725閱讀 470評(píng)論 0 1