作用 {/*** target:需要proxy处理的对象* handler:对对象进行处理的方法,如set、get*/let user1 = {name: "Mike",phone: "13146467899",addr: "zh",};let proxy = new Proxy(user1, {get: function (target, key) {switch (key) {case "phone":return (target[key].substring(0, 3) + "****" + target[key].substring(7));case "name":return target[key].substring(0, 1) + "**";default:return target[key];}},});console.log(proxy.phone, proxy.name); // 131****7899 M**
}
{/*** target:需要proxy处理的对象* handler:对对象进行处理的方法,如set、get*/let user1 = {name: "Mike",phone: "13146467899",addr: "zh",};let proxy = new Proxy(user1, {// 拦截setset(target, key, value) {if (key === "id") {return (target[key] = value + "1xx");} else {return target[key];}},});proxy.id = "xxx";console.log(proxy.id, proxy.name); // xxx1xx Mike
}
{/*** target:需要proxy处理的对象* handler:对对象进行处理的方法,如set、get*/let user1 = {name: "Mike",phone: "13146467899",addr: "zh",};let proxy = new Proxy(user1, {// 拦截has操作has: function (target, key) {if (key in target) {console.log(`${key}:`, target[key]);return true;} else {return false;}},});console.log("name" in proxy); // name: Mike true
}
{/*** target:需要proxy处理的对象* handler:对对象进行处理的方法,如set、get*/let user1 = {name: "Mike",phone: "13146467899",addr: "zh",// 私有属性_id: "s112ewd",};let proxy = new Proxy(user1, {// 拦截delete操作deleteProperty: function (target, key) {if (key.indexOf("_") === 0) {console.warn("私有属性无法删除");return false;}return true;},});console.log(delete proxy["_id"]); // 私有属性无法删除
}
{/*** target:需要proxy处理的对象* handler:对对象进行处理的方法,如set、get*/let user1 = {name: "Mike",phone: "13146467899",addr: "zh",// 私有属性_id: "s112ewd",};let proxy = new Proxy(user1, {// 拦截指定的属性名称,会遍历对象ownKeys(target) {return Object.keys(target).filter((item) => {return item !== "id" && item.indexOf("_") !== 0;});},});console.log(Object.keys(proxy)); // ['name', 'phone', 'addr']
}