4

JavaScript プロジェクトにes5-shim.jsunderscore.jsの両方があります。

es5-shim.jsは、Internet Explorer や一部の古いブラウザー用の配列にreduceや などの JavaScript ネイティブ関数を追加するだけです。someunderscore.js は、同じもの (ただし構文は異なります) と、さらに多くのもの (オブジェクトと配列のユーティリティ関数) を追加します。

ただし、es5-shim で追加された関数が存在する場合、underscore.js はそれらを使用します。

そのため、Firefox や Chrome などの「最近の」ブラウザーでは、underscore.js はブラウザーのネイティブ関数を使用します。純粋なJavaScript関数よりも優れていると思います。ただし、Internet Explorer では、underscore.js は es5-shim 関数を使用します。es5-shim.js を削除すると、underscore.js は独自の関数を使用します。

それについて何かアドバイスはありますか?プロジェクトから es5-shim を削除し、 underscore.js のみを使用する必要がありますか? それとも、underscore.js に es5-shim の関数を使用させるべきですか?

4

2 に答える 2

10

@ganesiの答えには同意しません。

Underscore の主な用途が、reduce() や some() などの ES5 に既に付属しているものである場合は、underscore.js を削除することをお勧めします。

現在 ES5 メソッドにコーディングしている場合は、IE8 または Firefox 3 のサポートが終了したときに ES5-shim を削除するだけで済みます。

現在アンダースコアを使用している場合、IE8 または Firefox 3 のサポートが終了しても、ほとんどのブラウザーが既に提供している大量の機能の余分なコピーを保持することになります。

于 2013-01-16T17:18:50.007 に答える
4

es5-shim は、ブラウザの JavaScript エンジンが ES5 と互換性がない場合、map、reduce、some、forEach などの JavaScript 関数を Array に追加します。Underscore.js は、「_」名前空間内に上記 (およびそれ以上) に類似したユーティリティ メソッドを追加します。したがって、この場合、同じアプリケーションで両方を使用するのは冗長です。

そうは言っても、es5-shim は、Date.now、Date.toJSON、Function.bind、String.trim (およびその他) など、Underscore.js に直接同等のものがないいくつかの関数を追加します。たとえば、Underscore は Function.bind と同等の _.bind と _.bindAll を提供しますが、Underscore.js は Date.now と Date.toJSON を提供しません。

したがって、es5-shim が提供するこれらの追加メソッドを使用すると、アプリケーションで es5-shim と Underscore.js の両方を使用できます。ただし、これらの追加の方法を使用していない場合、es5-shim を使用しても、アプリケーションのサイズが不必要に増加し、帯域幅が無駄になります。

于 2012-11-25T10:56:00.423 に答える