Sha*_*awn 9 javascript arrays object
我正在使用特定的游戏制作框架,但我认为这个问题适用于javascript
我试图制作一个叙述剧本,以便玩家可以看到"兽人击中你".在他的屏幕底部.我想一次显示最后4条消息,并且可能允许玩家回顾日志中的30-50条消息.为此,我设置了对象和一个数组来将对象推入.
所以我最初设置了一些像这样的变量......
servermessage: {"color1":"yellow", "color2":"white", "message1":"", "message2":""},
servermessagelist: new Array(),
Run Code Online (Sandbox Code Playgroud)
当我通过操作servermessage.color1 ... .message1等多次使用此命令(下面)与事件调用的不同数据时...
servermessagelist.push(servermessage)
Run Code Online (Sandbox Code Playgroud)
它用整个数据的副本覆盖整个数组...任何想法为什么或我能做些什么呢.
因此,如果我按color1"RED"和message1"Rover"..数据是正确的,那么如果我按color1"黄色"和message1"Bus"数据是.color1的两个副本:"yellow".message1:"Bus"
nbr*_*oks 21
当你servermessage
进入servermessagelist
你真的(或多或少)推动对该对象的引用.因此,所做的任何更改都会servermessage
反映在您引用它的任何位置.听起来你想要做的就是将对象的克隆推送到列表中.
声明一个函数如下:
function cloneMessage(servermessage) {
var clone ={};
for( var key in servermessage ){
if(servermessage.hasOwnProperty(key)) //ensure not adding inherited props
clone[key]=servermessage[key];
}
return clone;
}
Run Code Online (Sandbox Code Playgroud)
然后每当你想将一条消息推入列表时:
servermessagelist.push( cloneMessage(servermessage) );
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8007 次 |
最近记录: |