[問題] 不知如何歸類的寫法this.nonBase = {}

看板Ajax作者 (什麼東西什麼東西)時間12年前 (2013/05/21 14:33), 編輯推噓3(3011)
留言14則, 3人參與, 最新討論串1/1
如題 在追code 的時後看到一段 初始化的時後 this.nonBase = {}; 在程式裡面的用法 this.nonBase['0-1033'] = true; 請問這個是array的寫法嗎 因為我想對它操作移除物件無法進行 例如像 this.nonBase.splice('0-1033',1); 這樣操作是失敗的 是不是不可以這樣用呢 還是說這個寫法不是標準的array寫法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.120.150.53

05/21 14:49, , 1F
......{}是物件 []才是陣列
05/21 14:49, 1F

05/21 14:50, , 2F
splice是物件才有的函數
05/21 14:50, 2F

05/21 14:50, , 3F
另外陣列的key值只能是數字 {}的key值才能是任意字串
05/21 14:50, 3F

05/21 14:51, , 4F
splice是陣列才有的函數才對
05/21 14:51, 4F

05/21 14:52, , 5F
javascript的陣列也是一種物件就是了 但物件不是陣列
05/21 14:52, 5F
想請教這個的寫法是標準JS寫法嗎??? 那這個意思是這樣的物件結構應該是定義在更上層囉 否則實在是對這個操作沒什麼想法 目前只有想到復製一份完整物件出來 再倒回去 因為可以對它作foreath for(var key in this.nonBaseLayer){ alert(key); } ※ 編輯: OpenGoodHate 來自: 59.120.150.53 (05/21 17:27)

05/21 17:33, , 6F
那是淺層複製 只能複製一層 而且你要加上hasOwnProperty
05/21 17:33, 6F

05/21 17:33, , 7F
而且如果你直接連object, array一起複製進去複製到的是位
05/21 17:33, 7F

05/21 17:34, , 8F
址而不是新的object(or array) 對該子object or array
05/21 17:34, 8F

05/21 17:34, , 9F
的變動會影響原來的object(or array)
05/21 17:34, 9F
目前暫時先這樣寫 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)

05/21 19:34, , 10F
如果你只是想在firebug看他的話何不用console.dir
05/21 19:34, 10F

05/21 19:35, , 11F
會跑到當掉的話...可能這物件很大吧...
05/21 19:35, 11F

05/22 03:56, , 12F

05/22 03:56, , 13F
用 delete 就好了...
05/22 03:56, 13F

05/22 03:57, , 14F
這是物件成員指派的標準寫法。
05/22 03:57, 14F
delete this.nonBaseLayer[key]; 成功運作 感謝指導~~ 讓程式碼精簡不少 ※ 編輯: OpenGoodHate 來自: 59.120.150.53 (05/22 11:37)
文章代碼(AID): #1HcnL0vk (Ajax)
文章代碼(AID): #1HcnL0vk (Ajax)