Cambiar el valor de la propiedad del objeto dentro del objeto javascript afecta a otro objeto

Me gustaría cambiar una propiedad de un objeto, dentro de un objeto. Pero, cuando hice eso, otra propiedad de objeto que se creó usando el mismo prototipo también cambió.

El código es el siguiente:

var a = {
  x: { y: 'foo' }
}

var b = Object.create(a)
var c = Object.create(a)

console.log(a.x.y) // 'foo'
console.log(b.x.y) // 'foo'
console.log(c.x.y) // 'foo'

b.x.y = 'bar'

var d = Object.create(a)

console.log(a.x.y) // 'bar'
console.log(b.x.y) // 'bar'
console.log(c.x.y) // 'bar'
console.log(d.x.y) // 'bar'

Creo que el problema es porque todos los objetos se refieren a lo mismox, por lo tanto cambiandoy de cualquier objeto reflejado en todos los objetos. ¿Alguien puede explicar lo que realmente sucedió aquí, tal vez con referencia y sugerencia para una solución alternativa?

Respuestas a la pregunta(3)

Su respuesta a la pregunta