Object keys may only be strings. When you put an object in a computed property, it will be stringified to [object Object], so a[b] is the same as a[c]: a['[object Object]'].
let a = {};
let b = {
value: 'b'
};
let c = {
value: 'c'
};
a[b]=123;
a[c]=456;
console.log(a);
So, the final assignment of 456 to the [object Object] key overwrites the prior assignment of 123 (and the resulting object only has that one key).
If you want to safely use objects as "keys", use a Map instead, whose keys can be of any type, not just strings:
const a = new Map();
let b = {
value: 'b'
};
let c = {
value: 'c'
};
a.set(b, 123);
a.set(c, 456);
console.log(a.get(b));
console.log(a.get(c));
console.log(a). See whatbandcused as an object property compute to.