1
在遊戲Screeps中,我遇到了一些內置函數的返回類型問題。看看下面的代碼: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
的實例?