プロトタイプ拡張機能内でアロー関数を使用すると、予期しない動作が発生します。
function ES6Example(){}
ES6Example.prototype.foo = function(bar){
return ((baz) => {
console.log(this)
this.bar = baz
})(bar)
}
var es6Example = new ES6Example
es6Example.foo('qux')
console.info(es6Example.bar)
上記のコードでは、グローバル コンテキストが出力され、es6Example.bar
未定義になります。これは古い動作です。MDN で見たドキュメントに基づいて、これがインスタンスにバインドされると予想しました。ハーモニー フラグを使用して Node v0.11.15 を使用して上記のコードを実行しています。以下が機能することに注意してください。
function ES6Example(){
this.foo = baz => {
this.bar = baz
}
}