【ES6】Reflect

Reflect

把Object对象上上属于语言内部的方法放到Reflect对象上
让返回结果更合理。Object.defineProperty(obj, name, desc)在无法定义属性时,会抛出一个错误,而Reflect.defineProperty(obj, name, desc)则会返回false
让部分操作都变成函数行为。name in obj和delete obj[name]变成Reflect.has(obj,name),Reflect.deleteProperty(obj,name)
Reflect对象的方法与Proxy对象的方法一一对应,只要是Proxy对象的方法,就能在Reflect对象上找到对应的方法
    Reflect.apply(target, thisArg, args);
    Reflect.construct(target, args);
    Reflect.get(target, name, receiver);
    Reflect.set(target, name, value, receiver);
    Reflect.defineProperty(target, name, desc);
    Reflect.deleteProperty(target, name);
    Reflect.has(target, name);
    Reflect.ownKeys(target);
    Reflect.isExtensible(target);
    Reflect.preventExtensions(target);
    Reflect.getOwnPropertyDescriptor(target, name);
    Reflect.getPrototypeOf(target);
    Reflect.setPrototypeOf(target, prototype);

详细方法查看:http://es6.ruanyifeng.com/#docs/reflect

posted @ 2020-02-09 11:42  把我当做一棵树叭  阅读(181)  评论(0)    收藏  举报