Ну вообще это хак, удобный хак, который 100 лет везде был, поэтому его и стандартизировали. А чтобы привереды не ворчали, то они добавили методы сетторы/гетторы, но нам то с вами нет смысла боятся юзать эту удобняшку
Правда я не понимаю, почему они не заюзали Символы для этой задачи, например,
let foo = {
[Symbol.prototype]: {
bar: 1
},
get() {
return this.bar;
}
}
Ведь символы для того и были созданы и они уже юзаются для таких задач, например, Symbol.iterator