2016-04-19 5 views
7

私はJavascriptをのネイティブbindを使用しての二つの方法を発見した:正しいJavascriptバインド構文は何ですか?私はjQuery.proxy()から離れて移動するよう

this.thing.on(event, someHandler.bind(this)) 

this.thing.on(event, someHandler).bind(this) 

は、私の知る限り、彼らの両方が同じやります私は、後者がon()(またはその代わりに機能)に問題を引き起こす可能性があることを心配しています。前の構文は私が$.proxy()から慣れていたもので、明示的にハンドラにバインドされているように見えます。そのため、その構文を使用する方に傾いています。

これらの2行は、実際に同じことをしていますか?そうでない場合は、どちらがより安全な選択肢ですか?最初のケースで

+4

もう1つ試しましたか?その鍋?彼らは確かに同じことをしていない –

+0

私は彼らが両方とも私の場合に同じことを行うと述べたように –

+3

https://jsfiddle.net/arunpjohny/mr1zw9z0/1/ - 私はそうは思わない、彼らはないclose –

答えて

7

this.thing.on(event, someHandler.bind(this)) 

ネイティブbindが起動され、あなたが期待するとして、それは動作します。第2のケースで

this.thing.on(event, someHandler).bind(this) 

あなたはjQueryオブジェクトにbind()を呼び出すときにバインドされたイベントは、および、jqueryのbind()メソッドが呼び出されているにjQueryオブジェクトを返しますjQueryのon()方法、およびネイティブバインドとは何もしません。

+0

素晴らしいです。私は、2人がちょうど私のために同じように動作した特別なケースを持っていたと思った。 jqueryのバインドを完全に忘れてしまった。 –

関連する問題