在JS中,我有一个名为player
的类,它是:
class player {
constructor(name) {
this.name = name;
}
}
字符串
我有两个示例,分别是PL1
和PL2
:
const PL1 = new player ('pl1name');
const PL2 = new player ('pl2name');
型
我也有一个名为PLAYERS
的数组:
let PLAYERS = [];
型
现在的问题是,我如何才能创建一个数组,其中包含类player
的所有示例?
我知道我可以用PLAYERS.push(PL
n)
手动完成这一操作;但我正在寻找一种自动完成这一操作的方法。有内置函数吗?我应该使用循环吗?
5条答案
按热度按时间ff29svar1#
你可以为玩家创建一个容器类。这将允许容器创建玩家并管理他们。
Players
类可以公开一个接口,使其易于与单个或整体玩家进行交互。类似这样的东西可能是一个好的开始,可以用更多功能或不同的组织来填充:字符串
flseospp2#
要使用静态数量的
Player
对象初始化Array,可以在数组中调用new Player()
:字符串
你也可以使用循环来动态地创建你的播放器列表:
型
oyxsuwqo3#
实际上你只想把数据写入数组,所以你需要一个二维数组。
接下来,您可以向数组写入值或从数组读取值。
字符串
实际上你只需要一个player示例,每次都重置它的值来访问或创建其他的player。
型
所以,代码等于构造函数。
最终所有参与者的数组看起来有点像这样:
型
或
型
(note你也可以编写类似current_player.byname(name)的代码)
如果你想比较两个球员,或者所有球员,你只需要两个球员的示例。
当写入一个二维数组时,你可以使用命名值。我喜欢这种方式。
型
你可以很容易地添加一个值到数组中,通过添加一个val 2(weight,length,income,likes)你甚至可以添加names_of_children;一个二维数组中的数组。但是这可能会导致一些问题。
要比较玩家,或者对玩家进行排序,您也可以访问数组。
如果你把所有的代码都写在一个单独的文件中,并且这个文件只有在你访问和操作玩家的数据时才被加载,你不必创建一个het数组类,它也可以是一个模块。
型
刷新整个页面,所以其他.js文件不被使用
fykwrbwg4#
我现在无法评论你的回答,所以这里有一个补充:
字符串
请:要知道,在这几行中有很多糟糕的做法,你不应该把构造函数绑定到一个变量上,这个变量可能在其他地方被初始化,也可能没有被初始化,用任何外部变量来干预构造函数是非常糟糕的。
另外,作为一个旁注,虽然它是真实的,你可以改变consts属性,同时保持引用,所以你可以 * push对象在数组中声明为const,它真的不加起来作为自我文档化的代码,所以,如果你要修改这个数组,只是声明它与“让”从一开始。
ylamdve65#
你可以将每个示例作为构造函数的一部分压入到类的静态数组中。(在最基本的形式下,这可能类似于下面的代码)
这个答案解释了更多:https://stackoverflow.com/a/71696802/19529102
链接的答案还提供了一个改进,修复了缺陷,在这个基本版本中,数组直接暴露/返回
字符串