В localStorage вы можете использовать ключи с тем же именем, что и встроенные методы, но вы можете получить доступ к их значению только через .getItem
, если вы попытаетесь получить их через .myKey
или ["myKey"]
, вы просто получите сам метод, например
localStorage.setItem("myKey", "value0")
localStorage.myKey // "value0"
localStorage.getItem("myKey") // "value0"
localStorage.setItem("setItem", "value1") // or localStorage.setItem = "value1"
localStorage.setItem // function setItem() <-- Expected behavior
localStorage["setItem"] // function setItem() <-- Expected behavior
localStorage.getItem("setItem") // "value1"
localStorage.setItem("newKey", "value2") // Works, is a function.
Так что теперь мне интересно, как я могу получить такое же поведение на моем собственном объекте, например
var store = {
"getItem": function(key) {
return this[key];
},
"setItem": function(key, value) {
this[key] = value;
}
}
store.setItem("myKey", "value0")
store.myKey // "value0"
store.getItem("myKey") // "value0"
store.setItem("setItem", "value1") // or store.setItem = "value1"
store.setItem // "value1" !!! - Should be: function setItem()
store["setItem"] // "value1" !!! - Should be: function setItem()
store.getItem("setItem") // "value1"
store.setItem("newKey", "value2") // Doesn't work, no longer a function.