| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 
 | function MyProxy (target, handler) {
 let _target = deepClone(target);
 
 Object.keys(_target).forEach((key) => {
 Object.defineProperty(_target, key, {
 get () {
 return handler.get && handler.get(target, key);
 },
 set (newVal) {
 handler.set && handler.set(target, key, newVal);
 }
 })
 })
 
 return _target;
 
 function deepClone (org, tar){
 var tar = tar || {},
 toStr = Object.prototype.toString,
 arrType = '[object, Array]';
 
 for (var key in org) {
 if (org.hasOwnProperty(key)) {
 if (typeof org[key] === 'object' && org[key] !== null) {
 tar[key] = toStr.call(org[key]) === arrType ? [] : {};
 deepClone(org[key], tar[key]);
 }else {
 tar[key] = org[key];
 }
 }
 }
 
 return tar;
 }
 }
 
 |