ES6 では、従来の関数構文または簡潔なメソッド構文を使用してオブジェクト メソッドを定義できます。ただし、このコンテキストで新しく導入されたアロー関数を活用できますか?
使用試行と発生したエラー:
次に示すように、アロー関数をオブジェクト メソッドとして使用しようとしました。 、結果はエラー:
var chopper = { owner: 'John', getOwner: () => { return this.owner; } };
理由:
アロー関数は、オブジェクトのコンテキストの外にある語彙の this 値をキャプチャするため、オブジェクト メソッドでは期待どおりに機能しません。これにより、this は、オブジェクト インスタンスではなく、グローバルの this または字句的に囲む関数の this を参照することになります。
代替案と推奨事項:
オブジェクト メソッドの場合、従来の関数構文または ES6 メソッド構文は次のようにする必要があります。 used:
// Traditional function syntax var chopper = { owner: 'Zed', getOwner: function() { return this.owner; } }; // ES6 method syntax var chopper = { owner: 'Zed', getOwner() { return this.owner; } };
Unbound Arrow Functions (Rejected Proposal):
アロー関数に似た構文を導入する非バインド アロー関数の提案がありましたが、このバインディングは別のものです。しかし、この提案はボイラープレートを削減するだけであり、新しい機能は提供されなかったため、拒否されました。
以上がアロー関数は ES6 オブジェクト メソッドとして使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。