Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为本地存储模块定义一个get/set方法adhoc_Javascript_Ecmascript 6 - Fatal编程技术网

Javascript 为本地存储模块定义一个get/set方法adhoc

Javascript 为本地存储模块定义一个get/set方法adhoc,javascript,ecmascript-6,Javascript,Ecmascript 6,有没有办法定义一个get/set方法?我有一个封装localStorage的模块: const ACCESS_TOKEN = "ACCESS_TOKEN"; export const getString = key => { return localStorage.getItem(key); }; export const setString = (key, value) => { localStorage.setItem(key, value); }; ex

有没有办法定义一个get/set方法?我有一个封装localStorage的模块:

const ACCESS_TOKEN = "ACCESS_TOKEN";

export const getString = key => {
    return localStorage.getItem(key);
};

export const setString = (key, value) => {
    localStorage.setItem(key, value);
};


export default {
    get accessToken() {
        return getString(ACCESS_TOKEN);
    },
    set accessToken(value) {
        setString(ACCESS_TOKEN, value);
    },
};
我想在运行时生成它:

let obj;

obj["accessToken"] = get() {
 return getString(ACCESS_TOKEN);
}

obj["accessToken"] = set(value) {
      setString(ACCESS_TOKEN, value);
}

export default obj;

没有帮助,因为您似乎只能使用Object.defineProperty来定义简单的getter和setter,而不能定义自定义逻辑。

您可以将getter和setter传递给
对象。defineProperty
您希望如何与
obj['func']
交互?是否要调用
obj['func'].set()
obj['func'].get()
?或者,当您执行
obj['func']=2
@TKoL Tnx时,您希望它自动发生吗?我已经在问题中添加了用法,因为getter和setter都是函数,您可以在每个函数中使用您希望的所有自定义逻辑,对吗?这比你需要的要复杂得多——47次投票答案中描述的
Object.defineProperty
方法看起来最简单、最适合。也看到