只要加一行,讓 IE 五倍速執行 JavaScript

給心急的讀者們

/*@cc_on _d=document;eval('var document=_d')@*/

解說

因為 document 是 window 的子物件,對 IE 來說,要使用 document ,必須經過 window ,而上面的方法是讓 document 成為一個獨立的物件,不必透過 window ,因此速度就提昇了。

這個方法也適用於其他子物件,以下是完整的加速法:

/*@cc_on
eval((function(props) {
  var code = [];
  for (var i = 0, l = props.length;i<l;i++){
    var prop = props[i];
    window['_'+prop]=window[prop];
    code.push(prop+'=_'+prop)
  }
  return 'var '+code.join(',');
})('document self top parent alert setInterval clearInterval setTimeout clearTimeout'.split(' ')));
@*/

但當然也只有使用到這些物件的時候效能會有所提昇,如果你的程式中用到這些物件的部份不多,便不會有這麼大的效果。

資料來源一行で IE の JavaScript を高速化する方法

後記

根據這個原理,我想 Super_Long_Really_Annoying_Enormous_Class_Names(); 應該也會比 Super.Long.Really.Annoying.Enormous.Class.Names(); 更快吧! XD 寫 JavaScript 時要注意不要建立太多子物件……

3 Comments

  1. 剛才看到這個 =_____=”
    http://203.72.226.64/lifetype/post/20/150

    留言提醒他加上出處了…

  2. 謝謝你囉! :)

  3. ps.基本上是適用於所有瀏覽器(移除 /@cc_on 和 @/)
    但要注意ie才會有最大的速度提升

1 Pingback

  1. on Nov 25, 2009
Leave your thoughts
  • You can use some HTML in your comment.
  • Your comment may not display immediately due to spam filtering. Please wait for moderation.