javascript ошибка печати при вызове свойства отсутствующего объекта - PullRequest
0 голосов
/ 20 февраля 2020

Я хотел бы написать прокси-объект для автоматической печати ошибок при вызове некоторого свойства в исходном объекте, которое не найдено.

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')?

Обновление

Позвольте мне сделать это более конкретным c. На самом деле я пишу объект перевода.

Исходный объект может быть из json, например { "HELLO_KEY": "Hello World" }. Я должен позвонить как { label: _t.SOME_I18N_KEY } в коде интерфейса пользователя, предполагая, что _t является прокси-объектом выше. Я могу напечатать предупреждение, чтобы сказать мне, что отсутствует перевод.

1 Ответ

1 голос
/ 20 февраля 2020

Вы можете использовать объект 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);
...