为什么 localStorage["..."] 未定义,但 localStorage.getItem("...") 为空?
Why is localStorage["..."] undefined, but localStorage.getItem("...") is null?
我上次检查时,以下两行 returned true
:
null == localStorage["foo"];
null == localStorage.getItem("foo");
将 null
替换为 undefined
时同样适用。
那么第一个问题是,为什么有两种方式来寻址localStorage?为什么
localStorage["foo"]
return undefined
而
localStorage.getItem("foo")
returns null
?
我在开发 JS 时需要注意这个吗?
localStorage["..."]
是 localstorage 的无效使用。您正在尝试访问 localstorage
对象的方法,而不是访问实际的数据库。
你必须使用
localStorage.getItem("...")
和
localStorage.setItem("...")
访问存储数据库的方法。
Web Storage Specification requires 即 .getItem()
returns null
为未知密钥。
但是请注意,.getItem()
和 .setItem()
在 IDL 中专门定义为 Storage
接口的指定 getter
和 setter
,并且因此,它们也完全支持访问存储内容的方式。
但是 []
语法更类似于普通对象 and/or 数组 属性 getter,就像那些 returns undefined
对于未知的 属性 名称。
不使用[]
语法的原因是它将首先对对象属性进行操作,并且很乐意允许您覆盖[的真实属性和方法。 =21=] 对象,c.f:
> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0
在 javascript 中,对于对象中不存在的键,您总是会得到一个 undefined
值。
a = {}; //new object
alert(a["test"]); // you get 'undefined' because "test" keys is not found
在 localStorage 中 .getItem
是一种检查 localStorage 对象内部键的方法,returns null
如果找不到。
不要责怪javascript,这只是localStorage对象的行为
我上次检查时,以下两行 returned true
:
null == localStorage["foo"];
null == localStorage.getItem("foo");
将 null
替换为 undefined
时同样适用。
那么第一个问题是,为什么有两种方式来寻址localStorage?为什么
localStorage["foo"]
return undefined
而
localStorage.getItem("foo")
returns null
?
我在开发 JS 时需要注意这个吗?
localStorage["..."]
是 localstorage 的无效使用。您正在尝试访问 localstorage
对象的方法,而不是访问实际的数据库。
你必须使用
localStorage.getItem("...")
和
localStorage.setItem("...")
访问存储数据库的方法。
Web Storage Specification requires 即 .getItem()
returns null
为未知密钥。
但是请注意,.getItem()
和 .setItem()
在 IDL 中专门定义为 Storage
接口的指定 getter
和 setter
,并且因此,它们也完全支持访问存储内容的方式。
但是 []
语法更类似于普通对象 and/or 数组 属性 getter,就像那些 returns undefined
对于未知的 属性 名称。
不使用[]
语法的原因是它将首先对对象属性进行操作,并且很乐意允许您覆盖[的真实属性和方法。 =21=] 对象,c.f:
> localStorage['getItem'] = function() { return 0 }
> localStorage.getItem('getItem')
0
在 javascript 中,对于对象中不存在的键,您总是会得到一个 undefined
值。
a = {}; //new object
alert(a["test"]); // you get 'undefined' because "test" keys is not found
在 localStorage 中 .getItem
是一种检查 localStorage 对象内部键的方法,returns null
如果找不到。
不要责怪javascript,这只是localStorage对象的行为