1
10bkill1p 2022-03-24 11:17:27 +08:00
用一个中间变量去传,直接修改是会死循环的。
|
2
ccyu220 2022-03-24 11:27:27 +08:00
确实第一次见 get set 和参数名写一样的...
|
3
faceRollingKB 2022-03-24 11:48:15 +08:00
class Dep {
constructor(value) { this._value = value; } _value get value() { return this._value; } set value(newValue) { this._value = newValue; } } |
4
lisongeee 2022-03-24 11:50:21 +08:00
js/python 不像 kotlin ,setter/getter 需要手动声明额外的变量保存状态,kotlin setter/getter 内部有一个关键字 field ,无需手动额外声明变量
|
5
cutemurphy2888 OP @lisongeee 那为什么设计者不借鉴一把 /
|
6
lisongeee 2022-03-24 13:37:23 +08:00 2
我不到啊
|
7
enchilada2020 2022-03-24 13:41:43 +08:00 via Android
哈哈哈楼上对话太逗了
|
8
misdake 2022-03-24 13:45:52 +08:00
变量数据总要保存到一个地方,比如_value 这种。setter 里设置到同一个 setter 上肯定不行呀。
|
9
DOLLOR 2022-03-24 14:31:37 +08:00
@faceRollingKB
或许用私有变量更好 class Dep { constructor(value) { this.#value = value; } #value get value() { return this.#value; } set value(newValue) { this.#value = newValue; } } let dep = new Dep("cc"); dep.value = 'dd'; @cutemurphy2888 大概因为没几个人在 JS 里写 class 吧。 |
10
TWorldIsNButThis 2022-03-24 14:53:43 +08:00 via iPhone
@cutemurphy2888 kotlin 没有 java 或者 js 里的字段,
只有 property 的概念,property 是否对应一个真正的字段是编译器判断 |
12
blu10ph 2022-03-24 16:40:22 +08:00
@cutemurphy2888 我刚才提的需求,上午为什么没有实现?~
|
13
magewu1223ll 2022-03-24 16:44:18 +08:00
应该是 get 引起的吧,每次都读取 一读取就触发 get 然后 get 里面又有个读取,然后触发 get 。。。。。。
|
14
thinkershare 2022-03-24 16:44:56 +08:00
因为它本来就应该死循环, 设计上这样写就应该死循环!
|
15
jadehare 2022-03-24 16:52:05 +08:00
get value 死循环了,this.value = get value(),相当于方法自己调用自己了
|
17
volCan0 2022-03-24 19:30:28 +08:00
看看 vue3 的 ref
|
18
Opportunity 2022-05-16 18:30:14 +08:00
|