es6学习笔记11--Proxy和Reflect

前端开发 作者: 2024-08-25 23:05:01
Proxy概述 Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种“元编程”(meta programming),即对编程语言进行编程。 Proxy可以理解成,在目标对象之前
var proxy = new Proxy(target,handler);
new Proxy({},{
  get: function(target,property) {
    return 35;
  }
});

proxy.time // 35
proxy.name  35
proxy.title  35
var target = {};
var handler = Proxy(target,handler);
proxy.a = 'b';
target.a  "b"
 {
  get: if (name === 'prototype') return Object.prototype;
    return 'Hello,' + name;
  },apply: function(target,thisBinding,args) { return args[0]; },1)">construct: return args[1]; }
};

var fproxy = new Proxy((x,y) {
  return x + y;
},handler);

fproxy(1,2);  1
new fproxy(1,1)"> 2
fproxy.prototype;  Object.prototype
fproxy.foo;  'Hello,foo'
 老写法
try {
  Object.defineProperty(target,property,attributes);
   success
} catch (e) {
   failure
}

 新写法
if (Reflect.defineProperty(target,attributes)) {
  else {
   failure
}
 老写法
'assign' in Object  true

 新写法
Reflect.has(Object,'assign')  true
  • Reflect.apply(target,thisArg,args)
  • Reflect.construct(target,args)
  • Reflect.get(target,receiver)
  • Reflect.set(target,receiver)
  • Reflect.defineProperty(target,desc)
  • Reflect.deleteProperty(target,name)
  • Reflect.has(target,name)
  • Reflect.ownKeys(target)
  • Reflect.enumerate(target)
  • Reflect.isExtensible(target)
  • Reflect.preventExtensions(target)
  • Reflect.getOwnPropertyDescriptor(target,name)
  • Reflect.getPrototypeOf(target)
  • Reflect.setPrototypeOf(target,prototype)
 失败时抛出错误
Object.defineProperty(obj,desc);
 失败时返回false
Reflect.defineProperty(obj,desc);
原创声明
本站部分文章基于互联网的整理,我们会把真正“有用/优质”的文章整理提供给各位开发者。本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
本文链接:http://www.jiecseo.com/news/show_68648.html