【发布时间】:2016-03-13 12:39:48
【问题描述】:
我在玩 ES6 Class,我想知道使用 get 或 set 方法来处理该类的属性有什么意义。它们似乎毫无意义,因为无论如何你都可以在类上设置任意属性。
例如这个类
class Group {
constructor() {}
set name(newName) {
this._name = newName;
}
get name() {
return this._name;
}
print() {
console.log('this._name = ', this._name);
console.log('this.name = ', this.name);
}
}
我得到了这些结果
var group = new Group();
group._name = 'foo';
console.log('_name = ', group._name); => _name = foo
console.log('name = ', group.name); => name = foo
group.print(); => this._name = foo
=> this.name = foo
var group2 = new Group();
group2.name = 'bar';
console.log('_name = ', group2._name); => _name = bar
console.log('name = ', group2.name); => name = bar
group2.print(); => this._name = bar
=> this.name = bar
从这个例子的结果来看,似乎通过使用新的set 和get 方法只会给我的类增加不必要的膨胀。
【问题讨论】:
-
当您想在获取和设置值之前操作/修改值时,这些方法很有用,如果您不想这样做,则不需要它们。
-
如果你的 getter 和 setter 只是读/写另一个属性而不做其他事情,那么它们确实是不必要的。