Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用缺少的对象属性时出现javascript打印错误_Javascript_Javascript Objects - Fatal编程技术网

调用缺少的对象属性时出现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)