私はオープン ソースの JavaScript ライブラリを作成しています.bind()
が、メソッドを多用しています。これは、オブジェクト指向のコードがより明確に見えるという考えがあるためです。(議論の余地はありますが)
例
A1:
var that = this;
setTimeout(function () {
that.method();
}, 0);
対
B1:
setTimeout(this.method.bind(this), 0);
または、より実用的なコード部分
A2:
remoteDataSource.getData(function (a, b, c, d) {
obj.dataGetter(a, b, c, d);
})
対 B2:
remoteDataSource.getData(obj/* or prototype */.dataGetter.bind(obj));
古いブラウザーには非ネイティブを使用していますが、 bind の jsperf ベンチマークbind
を開くまではすべてが完璧でした。
コードを使用するbind
と 100 倍遅くなるようです。ライブラリをすべて書き直す前に、javascript エンジンに詳しい方に質問があります。
新しい機能であるbind
ため、すぐに最適化される可能性はありますか、それとも JavaScript アーキテクチャの制限のために可能性はありませんか?