🔸getter/setter
JS ⟩ class ⟩ definition ⟩ getters/setters
class User {
constructor(name) {
this.name = name; // ⭐ invokes "setter"❗
}
// ⭐ getter: access `this.name`
get name() {
return this._name;
}
// ⭐ setter: set `this.name` (this.name = ...)
set name(value) {
// guard length >= 4
if (value.length < 4) {
log("name too short."); return;
}
this._name = value; // private property
}
}
// test code
let user = new User('Mary');
// ⭐ invokes "setter":
user.name = 'Joe'; // "name too short."
// ⭐ invokes "getter":
log(user.name); // "Mary"⭐️ 注意:getter 不能這樣寫❗️
differences between getter and Object.defineProperty() :
the getter is defined on the instance's prototype,
with
Object.defineProperty()the property is defined on the instance.
Object.defineProperty()
Object.defineProperties()
object getter/setter
behaves like class field (instance property).
Google Apps Script 目前不支援 class field,但可用 (static/instance) getter/setter 代替。
[[Get]]/[[Set]] is used internally in mixin by Object.assign().
Archive
Last updated
Was this helpful?