gpt4 book ai didi

javascript - 删除 JavaScript 对象的实例

转载 作者:行者123 更新时间:2023-11-27 23:53:48 25 4
gpt4 key购买 nike

我有一个名为 box_brick 的 JavaScript 对象:

function box_brick( attribute1, attribute2, etc )
{
this.attribute_1 = attribute1;
this.attribute_2 = attribute2;
this.attribute_etc = etc;

box_brick.instances.push(this);
}

我通过声明它们来创建新的 box_bricks:

var box_62 = new box_brick('new attribute 1', 'new attribute 2', 'etc');

这非常适合我的应用程序,并为我提供了 box_brick.instances:

enter image description here

我的代码设置方式是,每次创建一个新框时,我都会在 box_brick.instances 中拥有实例,以及一个独立的对象,然后我可以直接调用它从中获取信息。例如,要获取 brick_60 的颜色,我只需调用 brick_60.box_color,在本例中我将收到“#ff008c”。

(这些可能是相同的 - 我仍然有点不清楚对象、实例、类等之间的区别,对此我表示歉意)

我一生都不知道如何从 box_brick.instances 中删除其中一个 box_brick - 例如,如果我想删除 brick_60,这样它就不再出现在 box_brick.instances 中,我不确定我将如何去做。

我尝试过执行brick_60.delete,delete(brick_60);和许多其他事情,但我完全被难住了。

任何指导将不胜感激。

最佳答案

在 ES6 中,使用Set

ES6 集合是包含存在或不存在的事物的“袋子”。与必须迭代才能找到某些内容的数组不同,使用集合,您可以直接添加和删除项目。可以说,它们是按其内容预先索引的。

// constructor
function box_brick( attribute1, attribute2, etc )
{
...
box_brick.instances.add(this);
^^^^^^^^^ // add to set
}

// initialize set
box_brick.instances = new Set();

// create a new instance
box_brick_instance = new box_brick(...);

// remove it from the set
box_brick.instances.delete(box_brick_instance);
^^^^^^^^^^^^^^^^^^^^^^^^^^ // delete from set

关于javascript - 删除 JavaScript 对象的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32447925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com