[JS] Getter and Setter 筆記
在 JavaScript 中如果 Class 在取屬性值或設定屬性值時,如果有比較複雜的運用時,可以使用 Getter
和 Setter
。
例如取不到值時不想回傳 undefined
,設定值小於零時設成將它以大於零來儲存時:(私有屬性習慣前面以 _
作為區隔)
class Option {
constructor(key, value, autoLoad = false) {
if (typeof key != 'undefined') {
this['_' + key] = value;
}
this.autoLoad = autoLoad;
}
get grade() {
if (this._grade !== undefined) {
return this._grade
} else {
return 'no grade prop'
}
}
set grade(value) {
if (value < 0) {
this._grade = -1 * value
} else {
this._grade = value
}
}
}
const op1 = new Option('grade', 99)
console.log(op1.grade) // 99
const op2 = new Option('color', 'red')
console.log(op2.grade) // no grade prop
op2.grade = -59
console.log(op2.grade) // 59