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'
posted @   trykle  阅读(44)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示