如何解决如何通过localStorage将带有封装私有属性的对象传递到另一个选项卡?
如果我尝试通过需要使用 JSON.stringify 的 localStorage 将它的一个实例传递给另一个选项卡,则该对象在逻辑上变为空。有没有办法通过使用 getter 来传递它而不以不同的方式保存私有属性?我可以以某种方式以不同的方式对实例进行字符串化,并在不丢失其原始字符的情况下传递它吗?
我有以下类定义:
class User {
constructor(username,password,email) {
let _username = '';
let _password = '';
let _email = '';
this.setUsername = username => {
if (!username) {
throw new Error("Benutzername darf nicht leer sein!");
}
_username = username;
};
this.getUsername = () => _username;
this.setPassword = password => {
if (!password) {
throw new Error("Passwort darf nicht leer sein!");
}
_password = password;
};
this.getPassword = () => _password;
this.setEmail = email => {
if (!email) {
throw new Error("E-Mail-Adresse darf nicht leer sein!");
}
_email = email;;
}
this.getEmail = () => _email;
this.setUsername(username || '');
this.setPassword(password || '');
this.setEmail(email || '');
}
}
解决方法
您可以创建一个方法将其保存到 localStorage,如下所示:
saveToLocal() {
localStorage.setItem(this._email,JSON.stringify(
{ this._email,this._username,this._password }
));
}
然后您可以使用以下命令从 localStorage 中检索它:
localStorage.getItem(<email>) || {};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。