Skip to content

Instantly share code, notes, and snippets.

@vlad-bezden
Created January 3, 2016 22:48
Show Gist options
  • Save vlad-bezden/fd0af1858db88d97bea6 to your computer and use it in GitHub Desktop.
Save vlad-bezden/fd0af1858db88d97bea6 to your computer and use it in GitHub Desktop.
Proxy Example

Proxy Example

Proxy example in ES2015. The only browser that supports this feature is Edge. Babel also doesn't support it

A Pen by Vlad Bezden on CodePen.

License.

'use strict';
/**
* Custom storage
*/
var myStorage = {
/** @type {Object} key-value object */
data: {},
/**
* Getter
* @param {String} key
* @returns {*}
*/
getItem: function(key) {
return this.data[key];
},
/**
* Setter
* @param {String} key
* @param {*} val
*/
setItem: function(key, val) {
this.data[key] = val;
}
},
/**
* Storage proxy
* @type {Proxy}
*/
storage = new Proxy(myStorage, {
/**
* Proxy getter
* @param {myStorage} storage
* @param {String} key
* @returns {*}
*/
get: function(storage, key) {
return storage.getItem(key);
},
/**
* Proxy setter
* @param {myStorage} storage
* @param {String} key
* @param {*} val
* @returns {void}
*/
set: function(storage, key, val) {
return storage.setItem(key, val);
}
});
storage.bar = 'bar';
console.log(myStorage.getItem('bar')); // bar
myStorage.setItem('bar', 'baz');
console.log(storage.bar); // baz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment