オブジェクトリテラルの矢印関数がwindow
として呼び出され、なぜthis
と表示されるのか理解しようとしています。誰かが私にいくつかの洞察を与えてくれる?オブジェクトリテラルの矢印機能
var arrowObject = {
name: 'arrowObject',
printName:() => {
console.log(this);
}
};
// Prints: Window {external: Object, chrome: Object ...}
arrowObject.printName();
そして、期待どおりに動作対象:
var functionObject = {
name: 'functionObject',
printName: function() {
console.log(this);
}
};
// Prints: Object {name: "functionObject"}
functionObject.printName();
がBabel REPLによると、彼らは
var arrowObject = {
name: 'arrowObject',
printName: function printName() {
console.log(undefined);
}
};
そして
var functionObject = {
name: 'functionObject',
printName: function printName() {
console.log(this);
}
};
にtranspiledていないのはなぜと呼ばれるはthis
となりますか?
コンソールログは、Fiddle(use strict;
は使用しません)です。
'ウィンドウオブジェクトとして... arrow関数は作成者の' this'値を 'this'コンテキストとして使用します –