作者OpenGoodHate (什麼東西什麼東西)
看板Ajax
標題[問題] 不知如何歸類的寫法this.nonBase = {}
時間Tue May 21 14:33:32 2013
如題
在追code 的時後看到一段
初始化的時後
this.nonBase = {};
在程式裡面的用法
this.nonBase['0-1033'] = true;
請問這個是array的寫法嗎
因為我想對它操作移除物件無法進行
例如像
this.nonBase.splice('0-1033',1);
這樣操作是失敗的
是不是不可以這樣用呢
還是說這個寫法不是標準的array寫法
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.150.53
1F:推 mrbigmouth:......{}是物件 []才是陣列 05/21 14:49
2F:→ mrbigmouth:splice是物件才有的函數 05/21 14:50
3F:→ mrbigmouth:另外陣列的key值只能是數字 {}的key值才能是任意字串 05/21 14:50
4F:→ mrbigmouth:splice是陣列才有的函數才對 05/21 14:51
5F:→ mrbigmouth:javascript的陣列也是一種物件就是了 但物件不是陣列 05/21 14:52
想請教這個的寫法是標準JS寫法嗎???
那這個意思是這樣的物件結構應該是定義在更上層囉
否則實在是對這個操作沒什麼想法
目前只有想到復製一份完整物件出來
再倒回去
因為可以對它作foreath
for(var key in this.nonBaseLayer){
alert(key);
}
※ 編輯: OpenGoodHate 來自: 59.120.150.53 (05/21 17:27)
6F:推 s25g5d4:那是淺層複製 只能複製一層 而且你要加上hasOwnProperty 05/21 17:33
7F:→ s25g5d4:而且如果你直接連object, array一起複製進去複製到的是位 05/21 17:33
8F:→ s25g5d4:址而不是新的object(or array) 對該子object or array 05/21 17:34
9F:→ s25g5d4:的變動會影響原來的object(or array) 05/21 17:34
目前暫時先這樣寫
var tempoObj = {};
for(var key in gmap.nonBaseLayer){
tempoObj[key] = gmap.nonBaseLayer[key];
}
this.nonBaseLayerMap={};
for(var key in tempoObj){
if(key != '0-1033'){
this.nonBaseLayer[key] = tempoObj[key] ;
}
}
不知道hasOwnProperty 要加在哪邊會比較好
我是有用一個clone的程式碼
http://jimwayne.blogspot.tw/2013/01/blog-post.html
但是在firebug下面跑的話會當掉
所以只好自己試著寫
※ 編輯: OpenGoodHate 來自: 59.120.150.53 (05/21 18:08)
10F:推 s25g5d4:如果你只是想在firebug看他的話何不用console.dir 05/21 19:34
11F:→ s25g5d4:會跑到當掉的話...可能這物件很大吧... 05/21 19:35
13F:→ TonyQ:用 delete 就好了... 05/22 03:56
14F:→ TonyQ:這是物件成員指派的標準寫法。 05/22 03:57
delete this.nonBaseLayer[key];
成功運作
感謝指導~~
讓程式碼精簡不少
※ 編輯: OpenGoodHate 來自: 59.120.150.53 (05/22 11:37)