2017-08-29 22 views
0

次のコードでは、obj1のオブジェクトリテラルでは、両方の関数の 'this'がobj1を参照しているが、太い矢印それはしません。なぜ誰かが説明できますか?私は、関数が等価であるか、太い矢印関数の中では、thisがobj1として字句的に定義されると想定していました。'this' in arrow関数とオブジェクトリテラルの非矢印関数

var obj1 = { 
    name : 'name1', 

    standardFunction : function() { 
    console.log(this.name);  // Refers to obj1 
    }, 

    fatArrowFunction :() => {  // Refers to the global object 
    console.log(this.name);   
    } 
} 

obj1.standardFunction(); 
obj1.fatArrowFunction(); 
+0

'this' *は字句解析されています。私。 'obj1'が定義されている環境の' this'の値を参照します。そして、そこには、「これ」は「obj1」を参照していません。 –

答えて

1

定義による矢印関数は、従来の関数とは異なる動作をします。 () => {}構文で定義された関数は、外側のスコープからコンテキストを継承します。