美文网首页
ES6之Reflect

ES6之Reflect

作者: 我家的猫子在哪里 | 来源:发表于2017-10-09 18:24 被阅读0次

       Reflect对象是ES6为了操作对象提供的新的API,它为了实现将object对象上的一些明显属于语言内部的方法放到Reflect对象上;修改某些Object的方法的返回结果,让其变得更加合理(即减少报错);让object操作都变成函数行为;Reflect对象的方法和Proxy对象的方法一一对应,这让proxy的修改默认操作有了基础,即使修改了Proxy的默认行为也可以从reflect上获取默认行为。

        Reflect对象的静态方法:Reflect.get(target,name,receiver)查找返回target的name属性,如果没有该属性则返回undefined,如果name属性部署了读取函数则读取函数this绑定receiver,如果第一个参数不是对象那么报错;Reflect.set(target,name,value,receiver)设置target的name属性为value,如果name属性设置了赋值函数那么this绑定receiver,如果第一个参数不是对象那么报错;Reflect.has(obj,name)对应name in obj里的in运算符,如果第一个参数不是对象报错;Reflect.deleteProperty(obj,name)等同于delete obj[name],用于删除对象属性,如果删除成功或者被删除的属性不存在那么返回true否则返回false;Reflect.construct(target,args)等同于new target(...args)提供一种不使用new方法来调用构造函数;Reflect.getPropertyOf(obj)用来读取对象的__proto__属性,对应Object.getPropertyOf(obj),唯一不同的是Object.getPropertyof的参数不是对象的话会被转化为对象,而Reflect对象就会报错;Reflect.setPropertyOf(obj,newProto)设置对象的__proto__属性,返回第一个参数对象,对应Object.setPropertyOf(obj,newProto),如果第一个参数不是对象Object.setPropertyOf(obj,newProto)返回都一个参数而Reflect报错,如果第一个参数是undefined或者null那么都会报错;Reflect.apply(func,thisArg,args)等同于Function.prototype.apply.call(func,thisArg,args)用于绑定this对象后执行给定的函数,一般来说如果要绑定一个函数的this对象可以写成fn.apply(obj,args) ,如果函数定义了自己的apply方法了只能写成Function.prototype.apply.call(fn,obj,args);Reflect.defineProperty(target,propertyKey,attribute)等同于Object.defineProperty用来定义对象属性,第一个参数不是对象那么就会报错;Reflect.getOwnPropertyDescriptor(target,propertyKey)等同于Object.getOwnPropertyDescriptor用来得到指定属性的描述对象,唯一的区别是如果第一个参数不是对象的话Object.getOwnPropertyDescriptor返回undefined,而reflect报错表示参数非法;Reflect.isExtensible(target)相当于Object.isExtensible返回一个布尔值表示当前对象是否可扩展,唯一的区别是Object.isExtensible的参数不是对象那么返回false,而Reflect报错;Reflect.preventExtensions(target)对应Object.preventExtensions,用于使一个对象不可扩展,返回一个布尔值表示是否操作成功,如果参数书不是对象Object.preventExtensions在ES5报错在ES6返回参数本身而Reflect报错;Reflect.ownkeys(target)返回对象的所有属性。

相关文章

  • ES6——Reflect 与 Proxy

    ES6 之 Proxy 介绍深入实践 ES6 Proxy & Reflect 1.Proxy Proxy 可以对目...

  • ES6之Reflect

    Reflect对象是ES6为了操作对象提供的新的API,它为了实现将object对象上的一些明显属于语言内部...

  • es6之Reflect

    本人自学es6已经有一段时间了,只觉得有些时候很是枯燥无味, 时而又觉得在以后的职业生涯中会很有用,因为es6的很...

  • ES6标准入门读书笔记12(Reflect)未完待续

    概述 § ⇧ Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect...

  • Reflect

    概述 § ⇧ Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect...

  • Reflect 对象

    Reflect 对象与 Proxy 对象一样,也是 ES6 为了操作对象而提供的新的API。Reflect 对象的...

  • ts + reflect 编程, 实现 类 spring bo

    es6 提供了 reflect api, es7 的 提供有装饰器。 我们可以尝试用装饰器 + reflect 实...

  • ES6 Reflect

    一、概述 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象...

  • Reflect对象

    Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设计目的...

  • Reflect用法详解

    概述 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API。Reflect对象的设...

网友评论

      本文标题:ES6之Reflect

      本文链接:https://www.haomeiwen.com/subject/irjpyxtx.html