Skip to content

Instantly share code, notes, and snippets.

@masters3d
Forked from emanb29/json_storage.js
Created June 21, 2017 21:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save masters3d/26eb740c7eaa2cab345b45a849811142 to your computer and use it in GitHub Desktop.
Save masters3d/26eb740c7eaa2cab345b45a849811142 to your computer and use it in GitHub Desktop.
Getters and setters for localStorage allowing it to transparently store objects using es6's Proxy
/* json_storage.js
* @danott
* 26 APR 2011
*
* Building on a thread from Stack Overflow, override localStorage and sessionStorage's
* getter and setter functions to allow for storing objects and arrays.
*
* Original thread:
* http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage
*
* Modified by emanb29 to include actual getters and setters
*/
Storage.prototype._setItem = Storage.prototype.setItem;
Storage.prototype.setItem = function(key, value)
{
this._setItem(key, JSON.stringify(value));
}
Storage.prototype._getItem = Storage.prototype.getItem;
Storage.prototype.getItem = function(key)
{
try
{
return JSON.parse(this._getItem(key));
}
catch(e)
{
return this._getItem(key);
}
}
localStorage = new Proxy(localStorage, {
get: function(target, name) {
return localStorage.getItem(name);
},
set: function(target, name, val) {
localStorage.setItem(name, val);
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment