调用缺少的对象属性时出现javascript打印错误
我想写一个代理对象,在调用原始对象中未找到的某些属性时自动打印错误调用缺少的对象属性时出现javascript打印错误,javascript,javascript-objects,Javascript,Javascript Objects,我想写一个代理对象,在调用原始对象中未找到的某些属性时自动打印错误 const proxyObjectFn = () => { const _obj = Object.assign({}, originalObject); const get = (key) => { const value = _obj[key]; if (value === undefined) { console.error(`${key} not found`);
const proxyObjectFn = () => {
const _obj = Object.assign({}, originalObject);
const get = (key) => {
const value = _obj[key];
if (value === undefined) {
console.error(`${key} not found`);
}
return value;
};
return {
get,
};
};
const proxyObject = proxyObjectFn();
export default proxyObject;
// caller
proxyObject.get('someProperty')
这是可行的,但是有没有什么优雅的方法可以让我通过proxyObject.someProperty
而不是proxyObject.get('someProperty')
更新
让我说得更具体一些。实际上我在写一个翻译对象
原始对象可能来自json,比如{“HELLO\u KEY”:“HELLO World”}
。假设\ut
是上面的代理对象,我将在UI显示代码中调用类似{label:\u t.SOME\u I18N\u KEY}
。我可以打印警告,告诉我缺少翻译。您可以使用该对象:
const处理程序={
get:(对象、道具)=>{
if(!obj.hasOwnProperty(prop))console.error(`${prop}未找到`);
返回对象[prop];
}
};
const\u t=newproxy({“HELLO\u KEY”:“HELLO World”},handler);
console.log(\t.HELLO\u键);
log(\u t.SOME\u不存在\u键)代码>这里的问题只是因为值未定义,并不意味着键不存在。您只需检查Object.hasOwnProperty(key)