いくつかのプロパティを持つES6クラスを作成しました。このように:ES6のjavascriptクラスのジェネリックメソッド内のすべてのゲッターセッターのリストまたは配列をフェッチする方法は?
class CustomLocalStorage {
//#region userName
get userName() {
this._userName = localStorage.getItem("25ciWC16Hh");
this._userName = this._userName ? decryptText(this._userName) : "";
return this._userName;
}
set userName(newValue) {
if(newValue) {
this._userName = encryptText(newValue + "");
localStorage.setItem("25ciWC16Hh", this._userName);
}
}
remove_userName() {
this._userName = null;
localStorage.removeItem("25ciWC16Hh");
}
//#endregion userName
//#region webapi
get webapi() {
this._webapi = localStorage.getItem("ALOrVJuVKt");
this._webapi = this._webapi;
return this._webapi;
}
set webapi(newValue) {
this._webapi = newValue;
localStorage.setItem("ALOrVJuVKt", this._webapi)
}
remove_webapi() {
this._webapi = null;
localStorage.removeItem("ALOrVJuVKt");
}
//#endregion webapi
上記のコードに見られるように、各プロパティはlocalStorageオブジェクトに結合されています。今、getter/setterのすべてのプロパティを取得してlocalStorageから削除する汎用メソッドが必要です。
removeAll() {
for (var key in this) {
if(key != "_settings" && key != "") {
this[key] = null;
localStorage.remove(key);
}
}
}
をしかし、それはどのゲッター/セッターのプロパティを取得されていません。
だから、そのために私はクラス内で、次の方法を書きました。誰かが私が間違っている場所を教えてくれますか?
localStorageキーはハッシュされていないので、インスタンスプロパティの名前は役に立ちませんか? – Bergi
アンダースコアのプレフィックス付きのプロパティを使用している理由がわかりません。何もキャッシュしていません。ローカル変数はより効果的ではないでしょうか? – Bergi