不,这在Javascript中是不可能的。顺便说一句,您当然是指 对象 (属性值映射)而不是数组。两种解决方案:
将您的对象实现为
Proxy
,旨在完全实现您想要的功能。但是,它只是一个草稿,目前仅在Firefox的Javascript 1.8.5中受支持。使用带有字符串参数而不是对象属性的getter函数。该函数可以在内部“字典”对象中查找输入键,并以编程方式处理未命中事件,例如,动态创建值或返回默认值。
当然,您可以为此类吸气剂功能建立工厂。
function defaultDict(map, default) { return function(key) { if (key in map) return map[key]; if (typeof default == "function") return default(key); return default; };}var a = defaultDict({cat: 1}, 0);console.log(a('cat')); // 1console.log(a('dog')); // 0


