El siguiente código JavaScript tiene un getter y un setter para name usando símbolos globales y age_ usando un guión bajo colgante.
Código JavaScript
function Human(name, age) { this.name = name; this.age_ = age; } Human.prototype.greet = function() { console.log(`Hello ${this.name}! You are ${this.age} years old.`); }; Human.prototype[Symbol.iterator] = function* () { yield* Object.getOwnPropertyNames(this); yield* Object.getOwnPropertySymbols(this); }; Object.defineProperties( Human.prototype, { name: { get() { return this[Symbol.for('name')]; }, set(value) { this[Symbol.for('name')] = value; }, }, age: { get() { return this.age_; }, set(value) { this.age_ = value; }, }, }, ); let mary = new Human('Mary Smith', 18); mary.greet(); console.dir(mary); let john = new Human('John Doe', 25); john.greet(); console.dir(john); Salida de consola
Quiero saber si hay algún inconveniente de rendimiento en el uso de símbolos globales para métodos getter y setter porque encuentro que es un código mucho más limpio.