首页 > 解决方案 > 删除 Javascript 数组上的 getter

问题描述

我有一些代码在数组中使用 getter,但遇到了一个问题,delete即没有从数组中删除元素。我想知道是否有办法开始delete工作。

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

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

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

标签: javascript

解决方案


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

let x = [];
Object.defineProperty(x, 0, {
  configurable: true,
  get: function() {
    return "fake value";
  }
});
console.log(x[0]);
delete x[0];
console.log(x[0]);

请参阅如何撤消 Object.defineProperty 调用?


推荐阅读