Javascript全局命名空间和动态属性问题

时间:2011-03-15 16:48:05

标签: javascript

假设我想拥有一个可以跨页面显示和访问的全局对象(??)

// core.js
var MyLib = {}; // global Object cointainer
MyLib.value = 1;

如果我这样定义,那么只要我加载core.js,我就可以在其他地方访问MyLib.value。

但是,如果我想在其他地方向对象MyLib添加新属性,请说:

//extra.js
MyLib.otherVal = 2;

然后我尝试从其他地方访问MyLib.otherVal,它不可用。我可能对这个假设如何工作有一些根本的误解。我希望有人能够启发我。

阅读完评论后,我意识到我想要的范围确实是跨页面的。这甚至可能吗?

感谢

奥利弗

1 个答案:

答案 0 :(得分:1)

如果您想跨页面传输数据,实际上有三种主要方法:

  1. localStorage的即可。请参阅this page以获得对概念的详尽解释,如何使用它,等等。 Here是一个处理JavaScript存储的库。
  2. <强>缓存即可。 Cookie可以存储4KiB数据,但有些用户会将其禁用。
  3. window.name 即可。您可以在window.name中存储最多2MiB的数据。 Here是一个专注于在window.name中存储数据的库;它似乎写得很好。
  4. 您可以编写一个应用程序来利用所有这三种技术,从LocalStorage开始,如果其他所有方法都失败,则回退到window.name