我想知道是否可以覆盖对象的未启动键的"未定义",以便:
var obj={}
console.log(obj.randomKey)
output in console:
0
Run Code Online (Sandbox Code Playgroud)
我很清楚我"忘记"启动obj.randomKey.这实际上是我的问题.
我可以为对象或类的任何未启动的键设置默认值吗?
如果你很好奇
我问的原因是我试图解决一个允许用"本地"语言创建对象的谜语,例如:
const jane = new Thing('Jane')
jane.name // => 'Jane'
// can define boolean methods on an instance
jane.is_a.person
jane.is_a.woman
jane.is_not_a.man
jane.is_a_person // => true
jane.is_a_man // => false
Run Code Online (Sandbox Code Playgroud)
这是我采取的第一个策略:)
更新: 我解决了谜语:)如果有人有兴趣尝试:https://www.codewars.com/kata/the-builder-of-things/train/javascript
您无法真正定义默认值,但您可以使用ES2015代理假装他们有一个:
function createObj(obj) {
return new Proxy(obj, {
get(target, key, receiver) {
if (target[key] === undefined) {
return 0;
}
return Reflect.get(target, key, receiver);
}
});
}
const myObj = createObj({});
console.log(myObj.test); // 0
Run Code Online (Sandbox Code Playgroud)
顺便说一句语言的好方法!
| 归档时间: |
|
| 查看次数: |
70 次 |
| 最近记录: |