【发布时间】:2012-09-21 12:34:17
【问题描述】:
我一直在做以下事情:
var store = window.localStorage;
store.setItem()
但现在我看到这样做的代码:
localStorage.setItem()
两者都做同样的事情吗?
【问题讨论】:
-
window.是“默认前缀”,所以“window.x = x”。
我一直在做以下事情:
var store = window.localStorage;
store.setItem()
但现在我看到这样做的代码:
localStorage.setItem()
两者都做同样的事情吗?
【问题讨论】:
window. 是“默认前缀”,所以“window.x = x”。
除非您在自定义范围内声明了一个名为 localStorage 的变量,否则它们是相同的。 localStorage 指的是window.localStorage。事实上,全局命名空间中的每个变量都可以作为window.<variableName>访问
例如:
<script>
function foo() {
// here window.localStorage == localStorage
}
function foo2() {
var localStorage = 10;
// here window.localStorage != localStorage
// since you have a local variable named localStorage
}
</script>
【讨论】:
"window" 是 Javascript 中的全局对象,所以如果没有冲突的机会可以省略它
【讨论】:
window.localStorage 和 localStorage 没有区别,Window 是全局对象
窗口是默认前缀
但正确的是window.localStorage,因为localStorage 属性是窗口对象的一部分。
【讨论】:
据说window.localStorage比写localStorage更快地找到localStorage。
将对它的引用存储在变量中会使其更快。
无论如何,这些改进在现代浏览器上可以忽略不计。只有当性能成为问题时,它才会变得有用。
无论如何,您可能会知道为什么会这样。
【讨论】:
这是旧的,但今天我可能发现了不同。
我有一个 React 应用程序,当我在没有 WI DOW 的情况下使用 SSL 在我的服务器上运行它时“忘记”了 localstorage 值。没有 SSL,它工作正常。
我回去将WINDOW添加到所有对localstorage的引用,问题就消失了
【讨论】: