您好,我是一名14岁的程序员。我只是花了一些时间使用名为ModPe的东西为Minecraft Pocket Edition创建一个mod。 ModPe为我提供了一系列可以与JavaScript一起使用的函数。无论如何,我认为我的代码没有错,这就是我来这里的原因。这是:
if (entityIsPassiveMob(entityId)) { // only add entity to list of entitys if entity is a passive mob var entityData = 1; // variable to be used with properties, it is set to 1 to become an object. An exception can't have a property because its not an object. entityData.flyType = random(1, 4); // 1 = rocketers, 2 = magical, 3 = dizzy, 4 = tired entityData.rocketers = []; entityData.magical = [random(1, 10)]; // amountBlocksAboveGround entityData.dizzy = []; entityData.tired = random(1, 4); // amountBlocksAboveGround listEntitys.push([entityId, entityData]); // push needed data into array clientMessage("added entity as " + entityData.flyType); // this prints undefined in Minecraft PE's chat box :/ }
感谢您的帮助!对象属性flyType基本上是未定义的,不知道其他对象是什么,但很可能也是未定义的。
答案 0 :(得分:2)
entityData
不是对象。这是一个数字。由于数字是原语,因此它不具有属性。因此,当您访问(读/写)其中一个属性时,会创建一个临时的,自动装箱的Number
对象,并立即将其丢弃(在计算表达式之后)。
因此,在entityData
上操作时,您不会访问同一个对象,而是访问不同的临时对象。
解决方案:将其变为适当的非原始对象:
var entityData = {};
如果你想要优雅,可以使用默认属性对其进行初始化,因为对象文字也允许:
var entityData = {
flyType: random(1, 4),
rocketers: [],
magical: [ random(1, 10) ]
};