Nastavit výchozí hodnotu atributů objektu Javascript

Existuje způsob, jak nastavit výchozí atribut objektu Javascript tak, že:

let emptyObj = {};
// do some magic
emptyObj.nonExistingAttribute // => defaultValue

Odpověď

Od té doby, co jsem před několika lety položil otázku, se věci pěkně posunuly.

Proxy jsou součástí ES6. Následující příklad funguje v prohlížečích Chrome, Firefox, Safari a Edge:

let handler = {
  get: function(target, name) {
    return target.hasOwnProperty(name) ? target[name] : 42;
  }
};

let emptyObj = {};
let p = new Proxy(emptyObj, handler);

p.answerToTheUltimateQuestionOfLife; //=> 42

Přečtěte si více v dokumentaci Mozilly na serverech proxy.