校验器
| const target = { |
| _id: '1024', |
| name: 'vuejs', |
| } |
| |
| |
| const validators = { |
| name(val) { |
| return Object.prototype.toString.call(val) === 'string'; |
| }, |
| _id(val) { |
| return Object.prototype.toString.call(val) === 'number'; |
| } |
| } |
| |
| const createValidator = (target, validators) => { |
| return new Proxy(target, { |
| _validator: validators, |
| set(target, propKey, value, proxy) { |
| let validator = this._validator[propKey](value) |
| if(validator) { |
| return Reflect.set(target, propKey, value, proxy) |
| } else { |
| throw Error(`无法设置属性为${propKey}的值为${value},类型不匹配`) |
| } |
| } |
| }) |
| } |
| |
| const targetProxy = createValidator(target, validators) |
| |
| |
| |
属性私有化
| const target = { |
| _id: '1024', |
| name: 'vuejs', |
| } |
| |
| |
| |
| const createProxy = (target) => { |
| return new Proxy(target, { |
| get: function(target, propKey, proxy) { |
| if(propKey[0] === '_') { |
| throw Error(`${propKey} is privated`) |
| } |
| return Reflect.get(target, propKey, proxy) |
| }, |
| set: function(target, propKey, value, proxy) { |
| if(propKey[0] === '_') { |
| throw Error(`${propKey} is privated, can not set ${value}`) |
| } |
| return Reflect.set(target, propKey, value, proxy) |
| } |
| }) |
| } |
| |
| const targetProxy = createProxy(target) |
| |
| |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具