我正在javascript中创建一个字典对象(例如关联数组)
var myobj = {
"a" : "Some string",
"b" : "Some string else"
}
如果我访问myobj.a,它将返回“Some string” 但如果我访问列表中没有的东西myobj.c它返回undefined。 有没有办法设置对象getter返回类似:“键不可用” 我们可以使用原型...... 谢谢你的帮助
答案 0 :(得分:6)
是/否。
使用ES5
无法拦截密钥上的泛型getvar Dictionary = {
get: function (key) {
if ({}.hasOwnProperty.call(this, key)) {
return this[key]
}
return "Key not available"
}
}
请注意,使用对象作为字典存在一些缺陷,请考虑使用strmap
之类的模块var dictionary = Proxy({}, {
get: function (target, name) {
if ({}.hasOwnProperty.call(target, name)) {
return target[name
}
return "Key not available"
}
})
只需使用ES6 map
即可var dict = new Map
dict.set("foo", "bar")
dict.get("foo")
答案 1 :(得分:4)
一种简单的方法是创建一个包装器方法,该方法首先测试密钥是否存在,如果不存在则返回标准文本。
e.g。
// ... in your object definition, depending on how you have done it
get: function(key) {
if (key in this) {
return this[key];
} else {
return 'Key not available.';
}
}
然后使用它:a.get('c')
。