我经常遇到这种情况:
var obj = { field: 2 };
并在代码中:
do_something( obj.fiel ); // note: field spelt wrong
即属性输入错误。我想尽早发现这些错误。
我想密封物体,即
obj = Object.seal(obj);
但这似乎只能防止像obj.fiel = 2;
这样的错误,并且在简单读取字段时不会抛出错误。
是否有任何方法可以锁定对象,以便检测并抛出对缺失属性的读取权限?
感谢, 保罗
编辑:有关情况的进一步信息
答案 0 :(得分:1)
我不认为这会在Javascript中起作用,因为对象是像JSON一样编写的,因此属性将是未定义的或null但不会抛出错误。
解决方案是编写本机getter / setter。
var obj = {
vars: {},
set: function(index, value) {
obj.vars[index] = value;
},
get: function(index) {
if (typeof(vars[index]) == "undefined") {
throw "Undefined property " + index;
}
return vars[index];
}
};
答案 1 :(得分:0)
现在javascript中没有可靠的getter / setter。你必须手动检查它。这是一种方法:
if (!('key' in object)) {
// throw exception
}