我有一个问题,
我有这个JS。
Scene.platform = new MenuItem();
Scene.platform.init(...code...);
这很好用,但我有N个平台,我是如何创造动态的?
我尝试了:for(i=0....){
Scene.platform+i = new MenuItem();
or
Scene.platform.i = new MenuItem();
}
我需要这样的结果:
Scene.platform1 = new MenuItem();
Scene.platform2 = new MenuItem();
Scene.platform3 = new MenuItem();
它有可能吗?提前谢谢。
答案 0 :(得分:1)
对于动态名称,您可以使用[]
语法。
Scene['platform' + i] = new MenuItem();
实施例
const Scene = {};
for(let i = 0; i < 3; i++) {
Scene['platform' + i] = {};
}
console.log(Scene);
但是考虑使用数组而不是对象并将项目推送到该数组中。然后你可以使用索引来获取,例如,第一项来自[0],你的对象样式可以命名为platform0
。
const Scene = { platforms: [] };
for(let i = 0; i < 3; i++) {
Scene.platforms.push({});
}
console.log(Scene.platforms[0]);
答案 1 :(得分:1)
使用数组:
Scene.platforms = [];
for (var i = 0; i < count; ++i) {
Scene.platforms.push(new MenuItem());
}
稍后,要访问它们,要么循环遍历数组(请参阅我的其他答案here)或索引它。例如,如果你想要第一个:
Scene.platforms[0].doSomething();
答案 2 :(得分:0)
任何时候你都有这样的变量:
platform1
platform2
platform...
platformN
你真正想要的是数组。给你的对象一个名为platforms
的数组,然后你可以存储你的平台&#34;在那个数组中。例如,如果你有这个:
Scene.platforms = [];
然后你可以将元素推送到它:
for (var i = 0; i < someAmount; i++) {
Scene.platforms.push(new MenuItem());
}