作者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
1F:→ TonyQ:没写 var 时,会拿global 的,也就是 window.p 来用,所以 10/29 16:42
2F:→ TonyQ:这样写会是彼此都盖到 window.p . 10/29 16:42
3F:→ TonyQ:说global不太对,应该说是 context 的 , default context 是 10/29 16:43
4F:→ TonyQ:window . 10/29 16:43