javascript - 调用缺少的对象属性时出现javascript打印错误
问题描述
我想编写一个代理对象以在调用原始对象中未找到的某些属性时自动打印错误。
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" }
. 我{ label: _t.SOME_I18N_KEY }
在 UI 显示代码中调用,假设_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);
推荐阅读
- eclipse - 在 xtend eclipse 中创建新类时出错
- vue.js - axios POST请求在数据库中正确保存数据后抛出500错误
- c++ - QVector (3D) [] 运算符在 3 级 for 循环中不一致
- python-3.x - print(*a) 中 * 的用途是什么,其中 'a' 是 python 中的列表
- android - 通过 adb pull 接收今天的文件
- javascript - 如何计算用户在文本表单中输入的特定符号的数量
- javascript - 如何在 Javascript 中重用相同的函数但又多了一个参数?
- php - 我如何解决这个未定义的索引错误我进入 php
- angular - ngOnInit 不等待构造函数服务调用
- c++ - 在指针中编码附加信息