如何读取存储的类型';这';用JavaScript?

如何读取存储的类型';这';用JavaScript?,javascript,storage,javascript-objects,Javascript,Storage,Javascript Objects,我想知道你们是如何读取“this”是什么类型的存储对象的? 假设你得到了这个函数: Storage.prototype.typeOf=function(){return this;} 现在您将在sessionStorage或localStorage中看到数据。但是如何在JS代码中获取这些信息呢?我试过了 Storage.prototype.typeOf=function(){ var x=this; alert(this) } 它只返回[对象存储],但这显然不是我搜索的内容。

我想知道你们是如何读取“this”是什么类型的存储对象的? 假设你得到了这个函数:

Storage.prototype.typeOf=function(){return this;}
现在您将在sessionStorage或localStorage中看到数据。但是如何在JS代码中获取这些信息呢?我试过了

Storage.prototype.typeOf=function(){
    var x=this;
    alert(this)
}
它只返回[对象存储],但这显然不是我搜索的内容。

我查看了存储类型的可用方法,但没有返回真正的类型。是否有获取此信息的方法?

因为只有两种类型的存储对象,所以您可以明确地检查它们

Storage.prototype.typeOf = function() {
  if (this === window.localStorage) {
    return 'localStorage';
  }
  return 'sessionStorage';
};

console.log(localStorage.typeOf());   // 'localStorage'
console.log(sessionStorage.typeOf()); // 'sessionStorage'

由于其中每一个都只是存储对象的特殊实例,因此没有确定每个实例分配给哪个变量的通用方法。

不幸的是,存储对象不公开任何可用于区分其提供本地存储还是会话存储的属性。我只是在谷歌浏览器中通读并确认了这一点

您唯一的选择是将存储对象的标识与其全局定义进行比较。您可能只想直接执行此操作,而不想麻烦将其包装到方法中

if (someStorage === window.localStorage) {
  // ...
} else if (someStorage === window.sessionStorage) {
  // ...
}

你试过
this===sessionStorage
this===localStorage
吗?我认为在JavaScript中没有任何“正确”的方法来检查这一点。JavaScript中只有一种通用的
存储类型,它不公开它连接到的底层浏览器存储系统。您当然可以检查类似于
this==sessionStorage
的内容,但我认为没有更好的解决方案。。。但这是个好问题。