Posted 5 months ago. Visible to the public.

JavaScript: Hash/Object with default value

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 from ECMAScript 6 that allow implementing a custom getter method. They work like this:

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

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

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

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

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

By refactoring problematic code and creating automated tests, makandra can vastly improve the maintainability of your Rails application.

Author of this card:

Avatar
Arne Hartherz
Last edit:
5 months ago
by Arne Hartherz
About this deck:
We are makandra and do test-driven, agile Ruby on Rails software development.
License for source code
Posted by Arne Hartherz to makandropedia