前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue 3 高阶指南之 Reflect

Vue 3 高阶指南之 Reflect

作者头像
公众号---人生代码
发布2020-11-03 09:56:36
1.3K0
发布2020-11-03 09:56:36
举报
文章被收录于专栏:人生代码人生代码

高阶指南之 Reflect

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

描述

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

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

其中的一些方法与 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.getPrototypeOf(target)

类似于 Object.getPrototypeOf()

Reflect.has(target, propertyKey)

判断一个对象是否存在某个属性,和 in 运算符 的功能完全相同。

Reflect.isExtensible(target)

类似于 Object.isExtensible().

Reflect.ownKeys(target)

返回一个包含所有自身属性(不包含继承属性)的数组。(类似于 Object.keys(), 但不会受enumerable影响).

Reflect.preventExtensions(target)

类似于 Object.preventExtensions()。返回一个Boolean

Reflect.set(target, propertyKey, value[, receiver\])

将值分配给属性的函数。返回一个Boolean,如果更新成功,则返回true

Reflect.setPrototypeOf(target, prototype)

设置对象原型的函数. 返回一个 Boolean, 如果更新成功,则返回true。

实际例子

检测一个对象是否存在特定属性
代码语言:javascript
复制
const duck = {
  name: 'Maurice',
  color: 'white',
  greeting: function() {
    console.log(`Quaaaack! My name is ${this.name}`);
  }
}

Reflect.has(duck, 'color') // true
Reflect.has(duck, 'haircut') // false
返回这个对象自身的属性
代码语言:javascript
复制
Reflect.ownKeys(duck)
// // [ "name", "color", "greeting" ]
为这个对象添加一个新的属性
代码语言:javascript
复制
Reflect.set(duck, 'eyes', 'black');
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CryptoCode 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 高阶指南之 Reflect
    • 描述
      • 静态方法
        • 实际例子
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档