调用缺少的对象属性时,javascript 打印错误

标签 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`);
    }
    return value;
  };

  return {
    get,
  };
};

const proxyObject = proxyObjectFn();

export default proxyObject;

// caller
proxyObject.get('someProperty')

这可行,但是有什么优雅的方法可以让我通过 proxyObject.someProperty 而不是 proxyObject.get('someProperty') 进行调用?

更新

让我说得更具体一些。实际上我正在编写一个翻译对象。

原始对象可能来自json,例如{ "HELLO_KEY": "Hello World"}。我要在 UI 显示代码中调用 { label: _t.SOME_I18N_KEY } ,假设 _t 是上面的代理对象。我可以打印警告来告诉我缺少翻译。

最佳答案

您可以使用Proxy对象:

const handler = {
  get: (obj, prop) => {
    if(!obj.hasOwnProperty(prop)) console.error(`${prop} not found`);
    return obj[prop];
  }
};

const _t = new Proxy({ "HELLO_KEY": "Hello World" }, handler);

console.log(_t.HELLO_KEY);
console.log(_t.SOME_NONEXISTENT_KEY);

关于调用缺少的对象属性时,javascript 打印错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60324341/

相关文章:

javascript - Angular : onClick on html element according to its class

javascript - $interval 的 invokeApply 参数不会改变任何东西

javascript - 根据其中一个键的条件,从数组中获取单个对象

javascript - 动态合并对象 - 对象属性名称问题

javascript - 如何制作一个 HTML 数字输入,将其值转换为十分之一(可能使用 jQuery)

javascript - Node.js 和 ws : Easiest way to stream an array

javascript - 在 Javascript 中根据用户对对象进行分组

javascript - 将键值对(数组中的值)添加到数组中的特定对象

javascript - 返回值作为对象属性

Javascript 对象返回未定义的传递 key