我想通过使用内部功能来移除玩家[0]。这个例子是我的第一个想法,但它没有用,请帮助我。
// Stores the players
var players = [];
// Prototype of a new player
var newPlayer = {
hp: 100,
xCord: 100,
yCord: 100,
// My try of removing player from inside itself
removePlayer: function(){
players.splice(0, 1);
}
}
// Push the newPlayer prototype into the players array
players.push(newPlayer);
// Try to remove the player
players[0].removePlayer();
答案 0 :(得分:1)
而不是0
,请在删除功能中尝试.indexOf(this)
。这将删除任何位置的元素:
var players = [];
var newPlayer = {
hp: 100,
xCord: 100,
yCord: 100,
removePlayer: function() {
players.splice(players.indexOf(this), 1);
}
}
players.push("test");
players.push(newPlayer);
players.push("something");
console.log(players);
players[1].removePlayer();
console.log(players);

答案 1 :(得分:0)
你错了 ...请参阅@georg的答案,即使这样做也不是"正确的" #34; player[0].removePlayer();
。将player[0]
替换为newPlayer
,您就可以了!
作为旁注,请尝试使用console.table
查看您的阵列内容(仅适用于Chrome和基于Chrome的浏览器)。
<强>更新强>
我认为你有错误:你的对象(player
)依赖和/或修改不属于它自己的东西(players
)。据我所知,这可能是你想要考虑的事情;但是如果你只是在玩,而不是认真地设计这些东西,那就没关系了。
答案 2 :(得分:-1)
我不知道你的意思
没有工作
如果你将console.log(players);
放在代码之后,你会发现播放器Array是空的,所以你的代码可以工作。