Im Spiel Screeps habe ich einige Probleme mit den Rückgabetypen einiger der integrierten Funktionen. Nehmen Sie den folgenden Code ein:Screeps eingebaute Funktionen geben keine erwarteten Typen zurück
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);
Sie würden erwarten, dass diese für alle Arrays und alle so sein Instanzen Array
. Doch in einer Welt Spiel, das ich die folgenden Ergebnisse erhalten (mit myRoomName
Satz auf den Namen eines Raumes Ich habe Zugang zu):
// 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
Aber warten, wird es eigenartiger. Wenn ich laufen den gleichen Code in der Simulation (diesmal myRoomName
ist 'sim'
), erhalte ich folgende Ergebnisse:
// 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
Warum nicht alle sind diese Funktionen Instanzen Array
Rückkehr? Wie gibt es sogar verschiedene Versionen von Array
in der Weltumgebung? Und gibt es eine Möglichkeit, die Ergebnisse in Instanzen von Array
zu transformieren?