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
我想为对象设置默认 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