JavaScript: Hash/Object with default value

Posted . Visible to the public.

You can easily have a JavaScript hash/object that returns a default value for unset keys/properties -- as long as you need to support only recent browsers.

The key are JavaScript proxies Show archive.org snapshot from ECMAScript 6 that allow implementing a custom getter method. They work like this:

var hash = new Proxy({}, {
  get: function(object, property) {
    return object.hasOwnProperty(property) ? object[property] : 'hello';
  }
});

When you set a key, you can read its value just like always.

hash['foo'] = 23
hash['foo']
// => 23

But instead of returning undefined for unset keys, our get proxy now returns our default value.

hash['bar']
// => 'hello'

This is supported in Chrome 49+, Firefox 18+, Safari 10+, and Edge 13+.

Arne Hartherz
Last edit
Arne Hartherz
License
Source code in this card is licensed under the MIT License.
Posted by Arne Hartherz to makandra dev (2017-02-10 10:25)