JavaScript 的 Set 对象在 ES6 中引入,采用类似于 === 运算符的相等算法。然而,这种方法在比较复杂对象时存在不足。
为了实现 Set 对象的深度对象比较,目前 JavaScript 中没有直接的解决方案。 Set 的添加、删除和检查存在的内部机制仅依赖于对象引用或原始值比较。
因此,任何自定义对象相等性的尝试都需要重写 Set 的核心方法,例如 .has ()、.add() 和 .delete()。由于每个操作都需要对整个 Set 进行迭代比较,这会带来开销和性能影响。
已经出现了一些建议,通过在 JavaScript 中引入专门的数据结构(例如记录和元组)来解决此限制。这些构造被设计为不可变的,并且可以通过值而不是对象引用进行比较。如果实现的话,Maps 和 Sets 可以利用这些结构来实现深度对象比较。
虽然这些建议可能在未来提供一个有前途的解决方案,但它们目前并不是标准 JavaScript 规范的一部分。因此,Set 对象的对象相等性的可定制性仍然是 JavaScript 中的一个挑战。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3