使用 ES6 代理对象,可以在普通对象中不存在属性时返回默认值。
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Proxy
如何用地图做到这一点?我尝试了以下代码,但始终返回默认值:
var map = new Map ([
[1, 'foo'], // default
[2, 'bar'],
[3, 'baz'],
]);
var mapProxy = new Proxy(map, {
get: function(target, id) {
return target.has(id) ? target.get(id) : target.get(1);
},
});
console.log( mapProxy[3] ); // foo
原文由 1in7billion 发布,翻译遵循 CC BY-SA 4.0 许可协议
那是因为您的地图键是数字,但代理属性名称始终是字符串。您需要
id
转换为一个数字。工作示例(需要现代 JS 引擎):