Javascript 为本地存储模块定义一个get/set方法adhoc
有没有办法定义一个get/set方法?我有一个封装localStorage的模块: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
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
方法看起来最简单、最适合。也看到