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+.

Profile picture of Arne Hartherz
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)