IT戦記 このページをアンテナに追加 RSSフィード Twitter

2006-06-30

要素をキャッシュして $ 関数をちょっと高速化

prototype.js の $ 関数

あっちこっちで、$、$、ってやるとその都度ノード探索発生してうざいので

prototype.js 1.5 の $ 関数

function $() {
  var results = [], element;
  for (var i = 0; i < arguments.length; i++) {
    element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);
    results.push(Element.extend(element));
  }
  return results.length < 2 ? results[0] : results;
}

キャッシュしてみますた

でも、IDがダイナミックに変更される場合(あんまないでしょ)はダメ

↓要素のキャッシュ

$.cache = {};
function $() {
  var results = [], element;
  for (var i = 0; i < arguments.length; i++) {
    element = arguments[i];
    if (typeof element == 'string') {
      var cache = arguments.callee.cache;
      element = cache[element] || (cache[element] = document.getElementById(element));
    }
    results.push(Element.extend(element));
  }
  return results.length < 2 ? results[0] : results;
}

さらに、

細かな高速化、二箇所

$.cache = {};
function $() {
  var results = [], element;
  for (var i = 0, len = arguments.length; i < len; i++) {
    element = arguments[i];
    if (typeof element == 'string') {
      var cache = arguments.callee.cache;
      element = cache[element] || (cache[element] = document.getElementById(element));
    }
    results[i] = Element.extend(element);
  }
  return results.length < 2 ? results[0] : results;
}

引数に id を指定すると内部的に $ が呼ばれているので、そういう場合はけっこう早くなるかも

では、そろそろ Shibuya.JS に向かいます。

ZIGOROゥZIGOROゥ 2006/06/30 16:54 行ってらっしゃいまし

tomishima@itmtomishima@itm 2006/07/25 15:25 お世話になります富嶋@ITMです。すみません、またこちらの記事を掲載させていただきます。問題がございましたら教えくださいませ。よろしくお願いします。

amachangamachang 2006/07/25 20:45 どうぞどうぞー。ありがとうございます。

haukamehaukame 2012/05/18 18:07 巨人倍増:http://www.akanpou.com/akanpou-76.html
威哥王:http://www.akanpou.com/akanpou-78.html
紅蜘蛛:http://www.akanpou.com/akanpou-155.html
花痴:http://www.akanpou.com/akanpou-166.html
曲美:http://www.akanpou.com/akanpou-454.html
三便宝:http://www.akanpou.com/akanpou-5.html
RU486:http://www.akanpou.com/akanpou-341.html
精力剤:http://www.akanpou.com/category-1-b0.html
媚薬:http://www.akanpou.com/category-7-b0.html
中絶薬:http://www.akanpou.com/category-15-b0.html
狼1号:http://www.akanpou.com/akanpou-402.html
蟻力神:http://www.akanpou.com/akanpou-111.html
絶對高潮:http://www.akanpou.com/akanpou-123.html
五便宝:http://www.akanpou.com/akanpou-400.html
三體牛鞭:http://www.akanpou.com/akanpou-110.html
福源春:http://www.akanpou.com/akanpou-398.html
威哥王 販売:http://www.akanpou.com/akanpou-64.html

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。