Re: [問題] delete function object
※ 引述《sweetpotatoa (ㄏㄨㄢ。ㄕㄨˇ)》之銘言:
: 假設我利用ajax去動態change我的頁面
: but每個頁面都有可能會需要一個function去處理某些事情
: 所以在load該頁面時也會load一個script片段進來
: 但是一旦load進來該script後
: browser就會建立該script內的所有物件
: 但是一旦我change到別的頁面是(用ajax)
: 又會load新的頁面&script
: 不過上一個頁面的object卻都還在(我用firebug看的)
: 請問有沒有辦法把上一個頁面所create的function object全部free掉阿???
: 如果不free掉的話
: 那由ajax寫成的網頁(ex:gmail)
: 不就會隨著時間增長,耗費越來越多的記憶體?
: 有人想過這問題嗎?
: 另外由用bind的匿名函式會不會隨著其所bind的對象被replace掉而自動free掉???
: 對了,我是用jquery去做的,他有相關的回收機制嗎???
: 謝謝:)
還是回文好了。
在javascript裡面,你程式所能用到的任何東西都是透過reference,變數裡面存放的
也是reference。
匿名函數如果沒有用closure把內部的函數拿到別處使用(例如bind給dom node或是
return然後assign給一個變數),那執行完後應該就可以回收了。
bind的對象沒了,自然bind給他的匿名函數理論上也會被free。不過jQuery有一個外掛
叫做live query,他會幫你維護bind給node的事件函數,即使你更新了內容,用特定
selector來bind的函數也不受影響。jQuery1.3把這個東西加入到核心,你用live()掛上
的函數不會因為更新node而受到影響。
你所說的狀況,我想還是要詳細看怎麼寫的才能確定。你有用live query或是jQuery1.3
的live event嗎?
--
Sapere Aude! 這就是啟蒙運動的口號!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 60.248.166.83
※ 編輯: fillano 來自: 60.248.166.83 (02/14 02:04)
→
02/14 03:28, , 1F
02/14 03:28, 1F
推
02/14 08:08, , 2F
02/14 08:08, 2F
→
02/14 08:09, , 3F
02/14 08:09, 3F
→
02/14 08:10, , 4F
02/14 08:10, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章