变量的setter可以调用它的getter

时间:2018-06-17 20:42:35

标签: javascript

我正在使用ES5 getter和setter以设置<table>.<entry> = <value>将值写入本地缓存的方式获取数据库条目,然后将值与DB同步。

getter的工作是从缓存中获取条目(如果可用),或者如果没有则将结果从数据库中拉出并返回。但它也应该调用setter来缓存结果以供将来查询。

问题是,我不知道如何从getter中调用setter。我尝试了this.<entry> = <value><table>.<entry> = <value><entry> = <value>,所有这些都导致了重新声明const(<table>)的错误。

有没有办法做到这一点?

编辑:以下是复制问题的最小示例:

const table = {
    _entry: "Something",
    get entry(){ 
        /*Do Stuff*/ 
        this.entry = "Something else";  // Exception: SyntaxError: redeclaration of const table
        return this._entry;
    },
    set entry(value){
        /*Do Stuff*/
        this._entry = value;
    }
}

1 个答案:

答案 0 :(得分:1)

从课堂内部(可以这么说),没有必要通过getter访问类成员。您可以按照建议使用this。如果您不被允许这样做,则意味着您的声明禁止它。如果您需要更改内部状态,请评估更改声明。没有提供代码很难说更多。