5

画像をプリロードするより良い方法は何ですか:

$.each(['{{ MEDIA_URL }}jwplayer/jwplayer.js',
        '{{ MEDIA_URL }}jwplayer/jwplayer.js.jgz',
        '{{ MEDIA_URL }}jwplayer/player.swf'], function() {
   $('<img/>')[0].src = this;

また:

var preloadImages = ['{{ MEDIA_URL }}jwplayer/jwplayer.js',
                     '{{ MEDIA_URL }}jwplayer/jwplayer.js.jgz',
                     '{{ MEDIA_URL }}jwplayer/player.swf'];
var imgs = [];
for (var i=0; i<preloadImages.length; i++) {
    imgs[i] = new Image();
    imgs[i].src = preloadImages[i];
}

何が他のものよりも優れているのですか?

4

3 に答える 3

7

2 番目は、単純な JavaScript と jQuery の過剰なブロートウェアを比較したものであるため、最初の方法よりも優れています。

l=preloadImages.length前に設定してループで使用することにより、2番目のものを少し改善できます。

于 2012-04-20T22:22:09.370 に答える
1

どちらも同じことをします。最初のスニペットは jQuery を使用していますが、2 番目のスニペットは使用していません。この目的のためだけに jQuery を使用する理由はないので、ライブラリを他の場所で使用していない場合は、2 番目のバージョンを使用してください。サイト全体で jQuery を使用している場合は、最初のものでも問題ありません。

于 2012-04-20T22:23:12.283 に答える
1

2番目は高速です。1 つ目は、(jQuery でより高いレベルのイテレーター メソッドを使用することにより) 型を少なくすることです。

他の理由でプロジェクトに jQuery を既に使用している場合、速度とコード サイズのどちらを最適化するかによって、どちらが優れているかが決まります。

技術的なレベルでは、実際の実装の違いが 1 つあります。2 番目のバージョンでは、画像オブジェクトの配列を変数に保持します。1 つ目は、画像オブジェクトがガベージ コレクションされるようにします。

于 2012-04-20T22:28:50.463 に答える