Javascript 在递归循环中调用setter

Javascript 在递归循环中调用setter,javascript,Javascript,我有一个Javascript类,它是: class mockUser { constructor ( location, ) { this.location = location; } set location (data) { this.location = data; // here's the problem } } 但是当我尝试使用set关键字时,我得到一个警告,说函数位置无限期地递归,只能通过抛出异常来结束。为什么呢 我是说我能做到

我有一个Javascript类,它是:

class mockUser {
  constructor (
    location,
   ) {
    this.location = location;
  }

  set location (data) {
    this.location = data; // here's the problem
  }
}
但是当我尝试使用
set
关键字时,我得到一个警告,说
函数位置无限期地递归,只能通过抛出异常来结束。为什么呢

我是说我能做到

  setLocation (data) {
    this.location = data; // here's the problem
  }
但是
set
的意义是什么呢

我想我误解了什么。

“Set”的意思是“当有东西试图设置这个属性时,调用这个函数”


因此,通过在setter中设置位置,您就调用了setter——因此是递归。

所以我实际上不必创建setter?只需像
obj.location='test'
那样分配它即可?还是二传是个好主意?是的,这是我的理解。当您希望某个赋值影响对象的其他属性时,setter非常有用。我看到的一个很好的例子是obj.fullName=“Joe Bloggs”会将字符串围绕空格拆分,并填充firstName和lastName属性——在内部,fullName属性实际上并不存在。