我想为对象设置默认返回值。
如果我有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]
时返回默认值。
这可以通过上面的设置来实现吗?
答案 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