Javascript 中的默认 getter 值

Default getter value in Javascript

我想为对象设置默认 return 值。

如果我有像 moz docs

中那样的设置
var o = { a: 0 };

Object.defineProperties(o, {
    'b': { get: function() { return this.a + 1; } },
    'c': { set: function(x) { this.a = x / 2; } }
});

我想要定义一个默认值,这样当我们尝试 o[unexpectedVar] 时,它 return 就是我们的默认值。

上述设置是否可行?

我认为您不能设置对象的默认 return。

但是您可以在函数中设置对象的默认值。

var o = { a: 0 };

test();

function test (o = { a: 1 }) {
   console.log(o.a);
}

您可以使用代理。

var o = {
  a: 5
};
var handler = {
    get: function(target, prop) {
      return target[prop]||'default value'
   }
}
var p = new Proxy(o,handler);
console.log(p.a) // this returns 5
console.log(p.unexpected) // this returns default value

所以在这个例子中,如果你访问定义的 属性 a 它 returns 5,但如果出现意外 属性 它 returnsdefault value

利用 ES6 中可用的代理

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

var p = new Proxy({}, handler);

p.answerToTheUltimateQuestionOfLife; //=> 42

查看更多信息https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy