美文网首页
ES6 Reflect对象

ES6 Reflect对象

作者: ITgecko | 来源:发表于2018-09-26 23:03 被阅读0次
Reflect对象介绍
  • Reflect对象是一个全局的普通对象,为何强调普通呢,因为他不像其他原生值(比如Number、String等)是函数/构造器。Reflect的原型就是Object,可以尝试在控制台输入以下代码查看:
let obj = {}, str = ""
Reflect.__proto__ === Object.prototype // true
obj.__ proto__ === Reflect.__proto__ // true
str.__proto__ // String {"", mulReplace: ƒ, format: ƒ, tmpl: ƒ, contains: ƒ, dbc2sbc: ƒ, …}
  • Reflect对象的属性成员都是函数,其中一部分与Object上的同名函数类似:
    • Reflect.getOwnPropertyDescriptor(...)
    • Reflect.defineProperty(...)
    • Reflect.getPrototypeOf(...)
    • Reflect.setPrototypeOf(...)
    • Reflect.preventExtensions(...)
    • Reflect.isExtensible(...)
Reflect函数与Object.*的区别
  • 这些Reflect与Object同名的函数,接收参数、功能等方面都是相同的,但是具体表现还是有区别,接下来说下:
    • 1,此类函数接收的第一个参数(目标对象)如果不是对象类型的,Object.* 会尝试把它转换为对象,而Reflect.* 则会直接跑出一个错误。


      image.png
    • 2,然后对某些不可扩展的对象执行defineProperty函数时,Object.defineProperty会抛出一个错误,Reflect.defineProperty则会返回一个false
      image.png
函数行为API
  • Reflect部分api为js语言提供了一种函数式的写法来等价替换命令式的写法,比如:
let obj = {a:1}

Reflect.has(obj, 'a')
// 相当于
'a' in obj 

Reflect.get(obj, 'a')
// 相当于
obj.a

Reflect.set(obj, 'b', 2)
// 相当于
obj.b = 2

Reflect.deleteProperty(obj, 'b')
// 相当于
delete obj.a

Reflect.construct(String, ['str'])
// 相当于
new String('str')
  • Reflect还有其他一些API,具体可参考MDN
  • Reflect还有一个重要的作用就是结合Proxy,后面再补充。

相关文章

  • Reflect 对象

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

  • ES6 Reflect

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

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

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

  • Reflect

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

  • Reflect对象

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

  • Reflect用法详解

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

  • ES6 Reflect

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

  • ES6 - Reflect

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

  • ES6 Reflect

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

  • 第十三章 Reflect

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

网友评论

      本文标题:ES6 Reflect对象

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