一个 setter 死循环错误 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
cutemurphy2888
V2EX    Javascript

一个 setter 死循环错误

  •  
  •   cutemurphy2888 2022 年 3 月 24 日 3724 次点击
    这是一个创建于 1413 天前的主题,其中的信息可能已经有所发展或是发生改变。
    class Dep {
    constructor(value) {
    this.value = value;
    }

    get value() {
    return this.value;
    }

    set value(newValue) {
    this.value = newValue;
    }
    }

    let dep = new Dep("cc");
    dep.value='dd';
    18 条回复    2022-05-16 18:30:14 +08:00
    10bkill1p
        1
    10bkill1p  
       2022 年 3 月 24 日
    用一个中间变量去传,直接修改是会死循环的。
    ccyu220
        2
    ccyu220  
       2022 年 3 月 24 日
    确实第一次见 get set 和参数名写一样的...
    faceRollingKB
        3
    faceRollingKB  
       2022 年 3 月 24 日
    class Dep {
    constructor(value) {
    this._value = value;
    }

    _value
    get value() {
    return this._value;
    }

    set value(newValue) {
    this._value = newValue;
    }
    }
    lisongeee
        4
    lisongeee  
       2022 年 3 月 24 日
    js/python 不像 kotlin ,setter/getter 需要手动声明额外的变量保存状态,kotlin setter/getter 内部有一个关键字 field ,无需手动额外声明变量
    cutemurphy2888
        5
    cutemurphy2888  
    OP
       2022 年 3 月 24 日
    @lisongeee 那为什么设计者不借鉴一把 /
    lisongeee
        6
    lisongeee  
       2022 年 3 月 24 日   2
    我不到啊
    KMpAn8Obw1QhPoEP
        7
    KMpAn8Obw1QhPoEP  
       2022 年 3 月 24 日 via Android
    哈哈哈楼上对话太逗了
    misdake
        8
    misdake  
       2022 年 3 月 24 日
    变量数据总要保存到一个地方,比如_value 这种。setter 里设置到同一个 setter 上肯定不行呀。
    AV1
        9
    AV1  
       2022 年 3 月 24 日
    @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 吧。
    TWorldIsNButThis
        10
    TWorldIsNButThis  
       2022 年 3 月 24 日 via iPhone
    @cutemurphy2888 kotlin 没有 java 或者 js 里的字段,
    只有 property 的概念,property 是否对应一个真正的字段是编译器判断
    EyeLip
        11
    EyeLip  
       2022 年 3 月 24 日
    @lisongeee 刀酱?
    blu10ph
        12
    blu10ph  
       2022 年 3 月 24 日
    @cutemurphy2888 我刚才提的需求,上午为什么没有实现?~
    magewu1223ll
        13
    magewu1223ll  
       2022 年 3 月 24 日
    应该是 get 引起的吧,每次都读取 一读取就触发 get 然后 get 里面又有个读取,然后触发 get 。。。。。。
    thinkershare
        14
    thinkershare  
       2022 年 3 月 24 日
    因为它本来就应该死循环, 设计上这样写就应该死循环!
    jadehare
        15
    jadehare  
       2022 年 3 月 24 日
    get value 死循环了,this.value = get value(),相当于方法自己调用自己了
    lisongeee
        16
    lisongeee  
       2022 年 3 月 24 日
    @EyeLip 我是虎弟,你,来沈阳,指定没你好果汁吃
    volCan0
        17
    volCan0  
       2022 年 3 月 24 日
    看看 vue3 的 ref
    Opportunity
        18
    Opportunity  
       2022 年 5 月 16 日
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4389 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 51ms UTC 03:46 PVG 11:46 LAX 19:46 JFK 22:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86