初识Reflect

Posted LyCat_00

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初识Reflect相关的知识,希望对你有一定的参考价值。

Reflect

Reflect 是一个内置的对象,它提供拦截 javascript 操作的方法。这些方法与proxy handlers 的方法相同。Reflect不是一个函数对象,因此它是不可构造的。

与大多数全局对象不同Reflect并非一个构造函数,所以不能通过new运算符对其进行调用,或者将Reflect对象作为一个函数来调用。Reflect的所有属性和方法都是静态的(就像Math对象)。

Reflect 对象提供了以下静态方法,这些方法与proxy handler methods (en-US)的命名相同.

其中的一些方法与 Object相同, 尽管二者之间存在 某些细微上的差别

静态方法

实例

检测一个对象是否存在特定属性

const apiJson = 
  name: 'static data',
  type: 'static',
  getData: function() 
    console.log(`获取的数据类型为:$this.name`);
  


Reflect.has(apiJson, 'type');  // true
Reflect.has(apiJson, 'age');   // false

为这个对象添加一个新属性:

Reflect.set(apiJson, 'data', '静态数据1');

返回这个对象自身的属性:

Reflect.ownKeys(apiJson)

// 检测一个对象是否存在特定属性
  const apiJson = 
    name: 'static data',
    type: 'static',
    getData: function() 
      console.log(`获取的数据类型为:$this.name`);
    
  

  console.log(Reflect.has(apiJson, 'type'));  // true
  console.log(Reflect.has(apiJson, 'age'));   // false

  // Reflect.set(apiJson, 'data', '静态数据1');
  console.log(Reflect.set(apiJson, 'data', '静态数据1')); // true

  // 返回这个对象自身的属性
  console.log(Reflect.ownKeys(apiJson));

详细文档请查看MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Reflect

以上是关于初识Reflect的主要内容,如果未能解决你的问题,请参考以下文章

初识Reflect

初识Reflect

java.lang.reflect操作对象属性(域)的值

JavaScript高级Proxy和Reflect

JavaScript高级Proxy和Reflect

ES6 Reflect反射机制