作者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)