window.somedata存储在哪里
where does window.somedata gets stored
在JavaScript中,当我说window.SomeData = 'whatever'
时,它在浏览器中保存在哪里?我以为它会保存在viewstate
中,但事实并非如此。另外,在window.someKey
中保存一些数据有多安全。我说的不是用户名或密码存储,而是一些通用数据,比如一些记录的PK值。
--编辑--
我之所以这么问,是因为我有一个包含5个选项卡的页面,每个选项卡都通过AJAX调用加载。我需要保存AJAX请求返回的数据,目前我正在使用window.somekey来保存它。
它被保存在全局对象window
中。那个对象不是很安全,它的生存期是针对那个页面的。
它不会保存在任何地方,它与使用全局变量完全相同:
var SomeData = "whatever"; //done in global scope obviously
window.SomeData === "whatever" //true
无处有效。不保存存储在window
对象的随机字段中的数据。
恼人的答案是它保存在内存中!这和没什么不同
var j = {}
j.SomeData = 'Whatever'
window
只是一个全局变量,包含了关于窗口(如文档DOM)的所有信息
window
可以像上面的j
变量一样保存数据。它的安全性不亚于将任何信息保存在js中的任何其他地方。唯一的风险是项命名空间可能被另一个库使用。
所以如果我是你,我会这么做。(以此作为编写优秀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!
通常将对象用作特定于web应用程序的函数和变量的命名空间是一种很好的做法。例如:
var site = {};
site.someData = 'whatever';
site.initGallery = function() {
//
};
全局名称空间中的变量声明(在客户端JS中,window
是全局名称空间)被称为全局名称空间污染,通常是不可取的,因为它可能导致与其他库的命名冲突,这些库也会污染全局名称空间,或者更糟的是,与浏览器的本地全局对象的命名冲突。
- Ember.js-接口状态应该存储在哪里
- 在哪里存储HTML模板以在Backbone.js中使用
- 我应该在哪里用javascript存储我的窗口维度
- 在哪里存储值以从角度模板获取它们
- ServiceWorker数据存储在哪里
- 在哪里存储具有第三方OAuth2服务的SPA / REST应用程序的refresh_token
- 我可以在哪里存储受保护的URL
- .data()在哪里存储值
- 流星在哪里存储陨石包
- 在AngularJS中,在哪里存储可以更改的对象的初始值
- 在哪里存储Access和Refresh令牌
- 在哪里存储JSON数据
- javascript在哪里存储变量,保存多长时间?
- Firefox在哪里存储javascript/HTML localStorage
- WordPress在哪里存储自定义的帖子类型?
- 我应该在哪里存储我的JSON Web令牌'non-singlepage'前端应用程序
- 应该在哪里存储特定于视图或视图集的脚本
- 在哪里存储静态的东西,如Meteor中的网站设置
- 在 Laravel 5 中,我在哪里存储我的 XMLHttpRequest() 调用的 php 脚本
- 在哪里存储一个chrome扩展的HTML片段