js 的胖箭頭問題

咱們在聲明函數的時候一般是函數

var foo function(a){this

console.log(a) es5

};it

用ES6 咱們寫成了這樣io

var foo = a =>{console

  console.log(a);function

};im

foo(2);co

只是少些了function字段哪些冗餘的東西嗎

首先看下下面的代碼:

var obj={

  id:"LOVE"

  love:functionLove(){

  console.log(this.id);

  }

};

var id = "HIT"

obj.love(); //LOVE

setTimeout(obj.love,100); // LOVE

都是LOVE ,沒什麼毛病吧,本應該是setTimeout(obj.love,100);輸入HIT

按照分析,love 函數丟失了同this 之間的綁定,應該是HIT this 應該是window 最經常使用的是var self = this;來處理下this:

var obj = {        id: "not LOVE",        love: function() {            var self = this            console.log(this.id);        }};var id = "not HIT"obj.love()setTimeout(obj.love(), 1000);哦 傳說中的胖尖頭this綁定時的行爲和普通函數的行爲徹底不一致,難道是在es5 中解決了?沒有 ,在嚴格模式下,這些都不是問題,可是在非嚴格模式下是會輸出Hit的
相關文章
相關標籤/搜索