window.somedata存储在哪里

时间:2012-03-22 22:09:39

标签: javascript jquery

在JavaScript中,当我说window.SomeData = 'whatever'时,它会在浏览器中保存在哪里?我以为它会保存在viewstate中,但它没有。另外,在window.someKey中保存一些数据需要多少安全性。我不是在谈论用户名或密码存储,而是一些常规数据,如某些记录的PK值。

- 编辑 -

我问这个的原因是因为我有一个带有5个标签的页面,每个标签都是通过AJAX调用加载的。我需要保存从AJAX请求返回的数据,目前我使用window.somekey来保存它。

5 个答案:

答案 0 :(得分:2)

它将保存在全局对象window中。该对象不是非常安全,其生命周期适用于该页面。

答案 1 :(得分:2)

它不会在任何地方保存,它与使用全局变量完全相同:

var SomeData = "whatever"; //done in global scope obviously

window.SomeData === "whatever" //true

答案 2 :(得分:0)

无处,有效。存储在window对象的随机字段中的数据不会保存。

答案 3 :(得分:0)

令人烦恼的答案是它保存在内存中!它没有什么不同

var j = {}
j.SomeData = 'Whatever'

window只是一个包含窗口所有信息的全局变量(例如文档DOM)

window可以保存数据,如上面的j变量。它不比在js中保存任何其他信息更安全。您唯一的风险是items名称空间可能被另一个库使用。

所以,如果我是你,我会这样做。 (使用它作为编写好的JS http://enterprisejquery.com/2010/10/how-good-c-habits-can-encourage-bad-javascript-habits-part-1/

的指南
(function(MyLibrary, $, undefined) {
    var stuff;
    MyLibrary.SomeData = 5;
}(window.MyLibrary = window.MyLibrary || {}, jQuery)); // or moo tools

alert(window.MyLibrary.SomeData); // 5!

答案 4 :(得分:0)

通常使用对象作为特定于Web应用程序的函数和变量的命名空间是一种好习惯。例如:

var site = {};

site.someData = 'whatever';

site.initGallery = function() {
    //
};

全局命名空间中的变量声明(在客户端JS中,window是全局命名空间)被称为全局命名空间污染,并且通常是不受欢迎的并且不推荐,因为它可能导致与其他库的命名冲突污染全局命名空间,或者更糟糕的是,使用浏览器的本地全局对象。