【发布时间】:2016-07-14 00:47:50
【问题描述】:
在游戏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 的实例?
【问题讨论】:
标签: javascript screeps