С MDN :
Метод Symbol.keyFor (sym) извлекает общий ключ символа из глобального реестра символов для данного символа.
В первом случае вы используете глобальный символ, но в качестве ключа объекта используете локальный символ:
// local symbol
Symbol('my_key')
// global symbol
Symbol.for('my_key')
Когда вы используете глобальный символ в литерале объекта, он будет работать так, как вы ожидаете:
let obj = {
[Symbol.for('my_key')]: 1,
enum: 2,
nonEnum: 3
}
Глобальные символы хранятся в глобальном реестре символов. Как вы храните местные символы, зависит от вас. Здесь демонстрируется разница между ними:
Symbol('my_key') === Symbol('my_key') // false
Symbol.for('my_key') === Symbol.for('my_key') // true