|
阅读:36739回复:3
Proxy 简单实现属性处理和权限控制--(无属性不报错)<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Proxy</title> </head> <body> <div id="content"></div> <div id="test"></div> </body> <script> // get 代理 实现属性处理 function getProxy(){ console.error('line 26 ->> obj arg error 请检查是否有这一个属性'); return '参数不存在' } let obj = { a:1000000000000 }; let objName = new Proxy(obj, { get: function (target, prototy) { return target[prototy] || getProxy() } }) test.innerHTML = objName.b; // apply 代理函数调用实现权限判断 let user = { role: 'admin', name: 'lishiwen', deleteContent: requireAdminRole(() => { console.log('delete fun') }) } function requireAdminRole (f) { return new Proxy(f, { apply: function (target,thisArg) { if (thisArg.role === 'admin') { target.call(thisArg); return '可以删除' } else { console.error('line 48 ->> 只有 admin 权限能对内容进行删除') } } }) } content.innerHTML = user.deleteContent(); </script> </html> |
|
|
沙发#
发布于:2019-09-16 11:33
|
|
|
只是写个小DEMO 哈,大家写代码可不能这样
代码分享这么花里胡哨啊