1

プロトタイプ拡張機能内でアロー関数を使用すると、予期しない動作が発生します。

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
    }
}
4

1 に答える 1

2

V8 の実装はまだ不完全です。レキシカルはまだありませんthis

そのため、Chrome の node.js と io.js では、それを使用するために特別な「harmony」パラメーターを設定する必要があります。一般に使用する準備はできていません。

于 2015-01-25T18:22:57.937 に答える