igualdade de objeto definido pelo usuário para um conjunto em harmonia (es6)
Tenho um problema em que estou gerando muitos valores e preciso garantir que só trabalhe com valores únicos. Como estou usando o nó js, com o sinalizador --harmony e tenho acesso às coleções de harmonia, decidi que um conjunto pode ser uma opção.
O que estou procurando é algo semelhante ao seguinte exemplo:
'use strict';
function Piece(x,y){
this.x = x
this.y = y
}
function Board(width,height,pieces){
this.width = width
this.height = height
this.pieces = pieces
}
function generatePieces(){
return [
new Piece(0,0),
new Piece(1,1)
]
}
//boardA and boardB are two different but equivalent boards
var boardA = new Board(10,10,generatePieces())
var boardB = new Board(10,10,generatePieces())
var boards = new Set()
boards.add(boardA)
boards.has(boardB) //return true
Agora, normalmente, para conseguir isso em outro idioma, por exemplo, c #, eu esperaria implementar uma função igual, assim como uma função geradora de código hash para Board e Piece. Desde que eu esperaria que a igualdade de objeto padrão seja baseada em referências. Ou talvez use um tipo especial de valor imutável (por exemplo, uma classe de caso no scala)
Existe um meio de definir igualdade para meus objetos resolverem meu problema?