【发布时间】:2017-07-09 14:49:45
【问题描述】:
我知道 getter 和 setter 在 JavaScript 中是如何工作的。我不明白的是,当我们可以使用普通函数获得相同的结果时,为什么我们需要它们?考虑以下代码:
var person = {
firstName: 'Jimmy',
lastName: 'Smith',
get fullName() {
return this.firstName + ' ' + this.lastName;
}
}
console.log(person.fullName); // Jimmy Smith
我们可以很容易地用函数替换getter:
var person = {
firstName: 'Jimmy',
lastName: 'Smith',
fullName: function() {
return this.firstName + ' ' + this.lastName;
}
}
console.log(person.fullName()); // Jimmy Smith
我看不出写 getter 和 setter 的意义。
【问题讨论】:
-
我认为这只是一个“风格”问题,因为你“不需要”使用它们,如果你愿意,你“可以”使用它们
-
可以说它可以使代码更具可读性:
foo.status = 'inactive'vs.foo.setStatus('inactive')... -
这不是一个基于意见的问题。它是完全有效的,并且与私有变量的可访问性有关。我正要提供一个完全有效的答案。
-
@Inkdot 问题是为什么要用
.foo而不是.getFoo()/.setFoo();它们都实现了相同的 WRT 封装。