初识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
相同, 尽管二者之间存在 某些细微上的差别
静态方法
-
Reflect.apply(target, thisArgument, argumentsList)
对一个函数进行调用操作,同时可以传入一个数组作为调用参数。和
Function.prototype.apply()
功能类似。 -
Reflect.construct(target, argumentsList[, newTarget\\])
对构造函数进行
new
操作,相当于执行new target(...args)
。 -
Reflect.defineProperty(target, propertyKey, attributes)
和
Object.defineProperty()
类似。如果设置成功就会返回true
-
Reflect.deleteProperty(target, propertyKey)
作为函数的
delete
操作符,相当于执行delete target[name]
。 -
Reflect.get(target, propertyKey[, receiver\\])
获取对象身上某个属性的值,类似于
target[name]。
-
Reflect.getOwnPropertyDescriptor(target, propertyKey)
类似于
Object.getOwnPropertyDescriptor()
。如果对象中存在该属性,则返回对应的属性描述符, 否则返回undefined
. -
Reflect.has(target, propertyKey)
判断一个对象是否存在某个属性,和
in
运算符 的功能完全相同。 -
返回一个包含所有自身属性(不包含继承属性)的数组。(类似于
Object.keys()
, 但不会受enumerable影响
). -
Reflect.preventExtensions(target)
类似于
Object.preventExtensions()
。返回一个Boolean
。 -
Reflect.set(target, propertyKey, value[ receiver])
将值分配给属性的函数。返回一个
Boolean
,如果更新成功,则返回true
。 -
Reflect.setPrototypeOf(target, prototype)
设置对象原型的函数. 返回一个
Boolean
, 如果更新成功,则返回true。
实例
检测一个对象是否存在特定属性
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的主要内容,如果未能解决你的问题,请参考以下文章