删除Javascript数组上的getter

删除Javascript数组上的getter,javascript,Javascript,我有一些在数组中使用getter的代码,我遇到了一个问题,delete不是从数组中删除元素。我想知道是否有办法让删除生效 下面是一些复制问题的玩具代码: let x = []; Object.defineProperty(x, 0, { get: function() { return; } }); delete x[0]; 编辑:切片实际上似乎不是一个选项,因为只复制元素本身,而不复制getter。您需要使用configurable:true选项定义属性。然后您可以删除它,g

我有一些在数组中使用getter的代码,我遇到了一个问题,delete不是从数组中删除元素。我想知道是否有办法让删除生效

下面是一些复制问题的玩具代码:

let x = [];
Object.defineProperty(x, 0, {
  get: function() {
    return;
  }
});
delete x[0];

编辑:切片实际上似乎不是一个选项,因为只复制元素本身,而不复制getter。

您需要使用configurable:true选项定义属性。然后您可以删除它,getter将被删除

设x=[]; Object.definePropertyx,0{ 对,, get:函数{ 返回假值; } }; console.logx[0]; 删除x[0];
console.logx[0] 您需要使用configurable:true选项定义属性。然后您可以删除它,getter将被删除

设x=[]; Object.definePropertyx,0{ 对,, get:函数{ 返回假值; } }; console.logx[0]; 删除x[0];
console.logx[0];当您使用getter时,数组中没有实际的0属性,因此没有可删除的内容。您实际上是在删除getter。那么我如何删除getter呢?delete x[0]似乎什么都不做。我做了一些尝试,基本上是针对这样的对象,delete将任何索引都变成未定义的,而不是像splice那样删除它。。splice适用于纯输出数组,delete适用于{entity:instance}sorta objects。多亏了这一点,我才学会了js的一个技术细节。。当您使用getter时,它非常有用,数组中没有实际的0属性,因此没有任何内容可删除。您实际上正在删除getter。那么我如何删除getter呢?delete x[0]似乎什么都不做。我做了一些尝试,基本上是针对这样的对象,delete将任何索引都变成未定义的,而不是像splice那样删除它。。splice适用于纯输出数组,delete适用于{entity:instance}sorta objects。多亏了这一点,我才学会了js的一个技术细节。。这是非常有用的,我们应该使词的动态和假同义词。。。只是开玩笑,但它让我笑了起来。谢谢,这很有效。有趣的是,在对象初始值设定项中定义getter时,configurable默认设置为true,这可以解释为什么它在其他地方对我有效。啊,javascript。我们应该让单词动态和假同义。。。只是开玩笑,但它让我笑了起来。谢谢,这很有效。有趣的是,在对象初始值设定项中定义getter时,configurable默认设置为true,这可以解释为什么它在其他地方对我有效。啊。