Javascript中的默认getter值

时间:2017-08-04 09:55:53

标签: javascript getter-setter

我想为对象设置默认返回值。

如果我有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]时返回默认值。

这可以通过上面的设置来实现吗?

3 个答案:

答案 0 :(得分:3)

您可以使用代理。

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,则返回5,但如果出现意外属性,则返回default value

答案 1 :(得分:2)

我认为您无法设置对象的默认返回。

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

var o = { a: 0 };

test();

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

答案 2 :(得分:1)

使用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