// object
const obj = { _name: 'john doe' };
const _age = 38;
// 🔸 using `Object.defineProperty()`
Object.defineProperty(obj, 'age', {
// shorthand method names (ES2015)
// -------------------------------
// ⭐️ 注意:這裡沒有 ":" 冒號❗️
// ↑
get() { return _age; },
set(value) { _age = value; },
enumerable: true,
configurable: true
});
// 🔸 using `Object.defineProperties()`
Object.defineProperties(obj, {
// ⭐️ data property
isMale: {
value: true,
writable: true,
},
// ⭐️ accessor property
name: {
get() { return this._name },
set(value) { this._name = value },
},
});
// test
obj.name = 'Joe'; // "setter" called
obj.name, // 'Joe'
obj.isMale, // true
obj.age, // 38