作者JYHuang (夏天到了,冷不起來了說)
看板Ajax
標題[閒聊] 寫JS時要注意scope的問題
時間Fri Oct 29 15:03:25 2010
前陣子寫了一個用到JS的Grid View
期間偶爾會出現一些小小bug,不過一直抓到觸發bug的原因在那。
所以一直就沒有花時間去試。
這兩天拿這個Grid的Script套用在新功能上時。
就發現了當呼叫另一個功能時會讓Grid的bug發生,
追查之下..
Grid在初始化時,會丟一些參數進去
在Grid的程式裡我是這樣接的
function grid_view(Params){
p = $.extend({ (JQuery的物件繼承)
.....
},Params)
}
然後另一個功能是這樣寫
function popup(Params){
p = $.extend({
.....
},Params)
}
相信到這裡應該就會有人看出問題在那裡了...
我忘了在grid_view跟popup函式裡把 p 用上var 了...
根據scope的方法.. popup裡的p會蓋掉grid_view的p
難怪有時grid_view會無法正常作動 囧>"
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.39.160.93
→ TonyQ:沒寫 var 時,會拿global 的,也就是 window.p 來用,所以 10/29 16:42
→ TonyQ:這樣寫會是彼此都蓋到 window.p . 10/29 16:42
→ TonyQ:說global不太對,應該說是 context 的 , default context 是 10/29 16:43
→ TonyQ:window . 10/29 16:43