js 代理封装
在JS中访问一个属性,如果没有定义这个属性,不会报告错误
将对象用代理套一层,当外部访问未定义的属性时报告错误
function __metaObject() { let obj = new Object() //将当前对象转为代理 //当外部访问未定义的属性时报告错误 let proxy = new Proxy(obj, { get(targetObj, propoty, receiver) { if (!targetObj.hasOwnProperty(propoty)) { throw new Error('\'' + targetObj + '\'' + ' 未包含属性: ' + '\'' + propoty + '\'') } return targetObj[propoty] } }) //返回代理对象 return proxy } //使用 let obj = new __metaObject() obj.name = "Tom"; obj.sayHello = function (targetName) { console.log("这里是: " + this.name + ", 你好: " + targetName) }; obj.sayHello("Jack57") obj.age //运行结果 这里是: Tom, 你好: Jack57 Error: '[object Object]' 未包含属性: 'age'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
2020-10-04 Maxscript replaceInstances referenceReplace instanceReplace 的区别