次のコードは動作していますが、より良い方法があると感じています。高次関数のスコープへの参照を渡しています。高次関数リファレンスJS
var p=this;
this.nodeModal.find(".modal-footer .save").click(function(){
p.saveAndClose();
});
高次関数の参照を渡す簡単な方法はありますか?バインディングのようなもの?あなたはbind()
methodを探している
次のコードは動作していますが、より良い方法があると感じています。高次関数のスコープへの参照を渡しています。高次関数リファレンスJS
var p=this;
this.nodeModal.find(".modal-footer .save").click(function(){
p.saveAndClose();
});
高次関数の参照を渡す簡単な方法はありますか?バインディングのようなもの?あなたはbind()
methodを探している
それとも、あなたは矢印機能で、ES6を使用している場合:私はバインドとしようと試みてきたが、それはなかった
this.nodeModal.find(".modal-footer .save").click(() => {
this.saveAndClose();
});
:
this.saveAndClose.bind(this)
次のエラーがスローされます。TypeError:this.saveAndCloseは未定義です。私は、この関数は高次関数スコープで定義されていないためだと思います。 – tul1
それは動作します!あなたは、矢印の機能について何が起こっているのか少し説明しますか?ありがとう – tul1
確かに、私は携帯電話の笑を使用していない場合、私はそれ以上のことを説明しているだろう、申し訳ありません。 arrow関数は、ES6の新機能で、Chromeのような最新のブラウザと互換性がありますが、古いブラウザで使用するためには、コードをBabelのようなコンパイラでES5コードにコンパイルする必要があります。 arrow functionファンクションの中に 'this'の参照を保持します。詳しくはhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functionsを参照してください –
BTW、フードの下、バベルは単にあなたと同じことをしました。コードをコンパイルして内部を見ることができるので、魔法のようには見えません。 –