javascript - 保存页面上的所有 JavaScript 变量

标签 javascript local-storage

使用JavaScript,是否可以将页面上的所有变量保存到本地存储,然后在刷新或重新加载页面时重新加载存储的变量?我试图将变量保存到本地存储并在刷新页面时加载它们。这是我到目前为止所尝试过的:

http://jsfiddle.net/jZVWk/1/

function saveAllVariables(){
    //save all variables on the page to local storage
}

function loadAllVariables(){
    //load all variables on the page from local storage, and re-create them using their original names
}

loadAllVariables(); //load all variables that were previously stored

if(typeof theName == "undefined"){
    var theName = prompt("Please enter your name:","Your name");
}

if(typeof currentTime == "undefined"){
    var currentTime = new Date();
}

document.body.innerHTML += "Time last visited: " + currentTime + "<br />";
document.body.innerHTML += "Your name : " + theName + "<br />";
var currentTime = new Date();

最佳答案

有点。如果你关心的变量都是全局的,并且不依赖于任何非全局数据,你可以看看这个问题:Fetching all (javascript) global variables in a page (感谢 Stegrex)

但这还不是故事的全部。在 JS 中,大量数据保存在隐藏范围内。这有两个问题:

  1. 这些对象可能无法从全局范围访问。
  2. 函数可能依赖于创建它们的范围内的数据,但无法从全局范围访问这些数据。

例如:

var globalThing = 'global';
var makeCounter = function() {
  var count = 0;
  return {
    increment: function() { count++; },
    getCount:  function() { return count; }
  }
}
var counter = makeCounter();
counter.increment();
alert(counter.getCount());

现在无法从字面上保存和重建此代码的状态。 count 处于闭包中,隐藏且无法从全局范围访问。如果没有更智能的方法来检查和保存对象的内部状态,您就无法保留此结构。

<小时/>

所以也许这不是您想要采取的方法。我敢打赌,有一种更干净的方式来做你想做的事。所以问题就变成了:为什么需要这个?你想做什么?

我强烈建议您明确地仅保存所需的数据,并且不要尝试强力保存整个宇宙。

就您而言,这很简单:

function saveOnlyImportantVaiables() {
  localStorage.theName = theName;
  localStorage.currentTime = currentTime;
}

关于javascript - 保存页面上的所有 JavaScript 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15484532/

相关文章:

javascript - 如何直接将createNSResolver与lookupNamespaceURI一起使用?

javascript - 为什么 element.innerHTML = 带日期信息的字符串不起作用?

javascript - 如何使用jquery将类存储在本地存储中?

javascript - localStorage ["something"] vs localStorage.something

javascript - Angular Js - 本地存储

Javascript 左右滑动一个 div - 但有一点 'ear'

javascript - Typescript:表达函数实例属性

javascript - 使用 jQuery 将数据库中的值显示到表中动态创建的文本字段

jquery - 页面刷新时,保留我为本地存储中的值设置的样式

javascript - 在angularjs中从本地存储中检索对象数组