Javascript 如何在调用ES6类的构造函数时创建该类的对象数组?

Javascript 如何在调用ES6类的构造函数时创建该类的对象数组?,javascript,class,oop,ecmascript-6,Javascript,Class,Oop,Ecmascript 6,我想在调用类的构造函数时创建对象的数组或对象?我的意思是,每次调用类构造函数时,它都会向数组或对象添加新对象 f、 e 我如何实现这样的功能?还是应该是另一种功能 类似于:blocks.push(这里是这个对象) 这正是您应该做的,但是块应该是一个数组,而不是一个对象。因此: let blocks = []; 然后在构造函数中: blocks.push(this); 实例: let blocks=[];// 您无法使用推送方法,因为对象上不存在该方法。当前您的用户通过以下方式创建了一个对象

我想在调用类的构造函数时创建对象的数组或对象?我的意思是,每次调用类构造函数时,它都会向数组或对象添加新对象

f、 e

我如何实现这样的功能?还是应该是另一种功能

类似于:blocks.push(这里是这个对象)

这正是您应该做的,但是
应该是一个数组,而不是一个对象。因此:

let blocks = [];
然后在构造函数中:

blocks.push(this);
实例:


let blocks=[];// 您无法使用
推送
方法,因为对象上不存在该方法。当前您的用户通过以下方式创建了一个对象:

let blocks = [];  // creates object with literal syntax.
push
是一种仅在阵列上可用的方法:

让obj={};
设arr=[];
console.log(类型为obj.push);//不要推obj

console.log(arr.push类型);//push位于数组上。prototype
您可以在类中添加另一个方法,并在构造函数中调用此metod。关于WeakSet/Maps,它们并没有真正的用处,因为不能迭代它们。。实际上,我至少花了半个小时来尝试实现它。我没有想到简单的“这个”。非常感谢;)@Jonaswillms——好吧,这又取决于用例是什么。
WeakMap
的传统用法是每个实例的私有信息,因此不需要迭代。我从未真正需要过一个
WeakSet
,但我听说它有一些使用案例@WojciechJakubek-不确定getter/setter与使用
WeakMap
(赞成或反对)有何关联:-)@WojciechJakubek-如果您的目标是在画布上绘制块列表,我建议不要让
Block
构造函数将块添加到列表中。让调用构造函数的代码执行此操作。使该代码负责向列表中添加(并可能从列表中删除)。
let blocks = [];  // creates object with literal syntax.