首页 > 解决方案 > 如何扩展内置对象“Set”以获取最后存储的值?

问题描述

我想扩展内置 js 对象Set以赋予它更多功能。我希望能够获得最后存储的项目的价值。我的代码片段就是这样做的,

class MySet extends Set {
  add(value) {
    super.add(value);
    this.last = value;
  }
}

let a = new MySet([1, 2, 3]);
a.add(1);
console.log(a.last); //1

但如果我尝试添加重复值,则会出现问题。在以下代码段中,最后存储的值是 3,而不是 1,但使用我的方法我得到 1。

所以我一直想知道如何扩展它,以便获得实际的最后存储值。

标签: javascriptclassmethodsset

解决方案


这是一个简单的解决方法

class MySet extends Set {
  add(value) {
    if (!super.has(value)) {
      super.add(value);
      this.last = value;
    }
  }
}

let a = new MySet([1, 2, 3]);
a.add(1);
console.log(a.last); //3


推荐阅读