在游戏Screeps中,我遇到了一些内置函数的返回类型的问题。采取以下代码:
var creeps1 = Game.creeps
var room = Game.rooms[myRoomName];
var creeps2 = room.find(FIND_CREEPS);
console.log(creeps1.constructor.name);
console.log(creeps1 instanceof Array);
console.log(creeps2.constructor.name);
console.log(creeps2 instanceof Array);
console.log([].constructor.name);
console.log([] instanceof Array);
你会期望这些都是数组,所以都是Array
. 然而,在世界游戏中,我得到以下结果(myRoomName
设置为我可以访问的房间的名称):
// Results in world
[1:11:11 AM] Object
[1:11:11 AM] false
[1:11:11 AM] Array
[1:11:11 AM] false
[1:11:11 AM] Array
[1:11:11 AM] true
但是等等,它变得更奇怪了。当我在模拟中运行相同的代码时(这次myRoomName
是'sim'
),我得到以下结果:
// Results in simulation
[1:11:11 AM] Object
[1:11:11 AM] false
[1:11:11 AM] Array
[1:11:11 AM] true
[1:11:11 AM] Array
[1:11:11 AM] true
为什么不是所有这些函数都返回 的实例Array
?Array
世界环境中怎么会有不同的版本?有没有办法将结果转换为实例Array
?