提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、概述
  • 二、Reflect有13中内置API

一、概述

Reflec是ES6的新特性,目的是为了更方便的操作对象。

二、Reflect有13中内置API

代码如下(示例):

// 1:Reflect.apply(target, thisArg, args)
// 对一个函数进行调用操作,同时可以传入一个数组作为调用参数
let obj1 = {};
Reflect.apply(Math.floor, obj1, [1.88]) // 1;// 2:Reflect.construct(target, args)
// 对构造函数进行 new 操作,相当于执行 new target(...args)
let obj2 = Reflect.construct(Date, [2021, 3, 1])// 3:Reflect.get(target, name, receiver)
// 获取对象身上某个属性的值,类似于 target[name]。如果没有该属性,则返回undefined
let obj3 = { a: 1, b: 2 };
Reflect.get(obj3, "a"); // 1// 4:Reflect.set(target, name, value, receiver)
// 将值分配给属性的函数。返回一个Boolean,如果更新成功,则返回true
let obj4 = {};
Reflect.set(obj4, "prop", "value"); // true// 5:Reflect.defineProperty(target, name, desc)
/*
Reflect.defineProperty方法基本等同于Object.defineProperty,直接在一个对象上定义一个新属性,或者修改一个对象的现有属性
不同的是,Object.defineProperty返回此对象。而Reflect.defineProperty会返回布尔值
*/
const obj5 = {};
Reflect.defineProperty(obj5, 'property', {value: 666,writable: false
}); // true// 6:Reflect.deleteProperty(target, name)
// 作为函数的delete操作符,相当于执行 delete target[name]
var obj6 = { a: 1, b: 2 };
Reflect.deleteProperty(obj6, "a"); // true
obj; // { b: 2 }// 7:Reflect.has(target, name)
// 判断一个对象是否存在某个属性,和 in 运算符 的功能完全相同。
const obj7 = {a: 0}
Reflect.has(obj7, "a"); // true// 8:Reflect.ownKeys(target)
/*
返回一个包含所有自身属性(不包含继承属性)的数组。
(类似于 Object.keys(), 但不会受enumerable影响, Object.keys返回所有可枚举属性的字符串数组).
*/
const obj8 = {z: 3, y: 2, x: 1}
Reflect.ownKeys(obj8); // [ "z", "y", "x" ]// 9:Reflect.isExtensible(target)
/*
判断一个对象是否是可扩展的(是否可以在它上面添加新的属性),类似于 Object.isExtensible()。
返回表示给定对象是否可扩展的一个Boolean 。
(Object.seal 或 Object.freeze 方法都可以标记一个对象为不可扩展。)
*/
var obj9 = {};
Reflect.isExtensible(obj9); // true// 10:Reflect.preventExtensions(target)
// 让一个对象变的不可扩展,也就是永远不能再添加新的属性。
var obj10 = {};
Reflect.isExtensible(obj10); // true
Reflect.preventExtensions(obj10);
Reflect.isExtensible(obj10); // false// 11:Reflect.getOwnPropertyDescriptor(target, name)
/*
如果对象中存在该属性,如果指定的属性存在于对象上,
则返回其属性描述符对象(property descriptor),否则返回 undefined。
类似于 Object.getOwnPropertyDescriptor()。
*/
const obj11 = {a: "hello"}
Reflect.getOwnPropertyDescriptor(obj11, "a");
// {value: "hello", writable: true, enumerable: true, configurable: true}//12:Reflect.getPrototypeOf(target)
// 返回指定对象的原型.类似于 Object.getOwnPropertyDescriptor()。
var obj12 = {};
Reflect.getPrototypeOf(obj12); // 等同于Object.prototype//13:Reflect.setPrototypeOf(target, prototype)
/*
设置对象原型的函数. 返回一个 Boolean, 如果更新成功,则返回true。
如果 target 不是 Object ,或 prototype 既不是对象也不是 null,抛出一个 TypeError 异常。
*/
var obj13 = {};
Reflect.setPrototypeOf(obj13, null); // true

ES6-Reflect属性介绍相关推荐

  1. es6 --- Reflect的静态方法

    Reflect.get(target, name, receiver): 查找并返回 target对象的 name属性,若没有,返回undefined var myObject = {foo: 1,b ...

  2. es6 Reflect对象的静态方法

    Reflect对象的静态方法 Reflect对象一共有 13 个静态方法. Reflect.apply(target, thisArg, args) Reflect.construct(target, ...

  3. es6 Reflect对象简介

    Reflect对象简介 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API.Reflect对象的设计目的有这样几个. (1) 将Object对象的一些明显属于语言内部 ...

  4. es6 Reflect对象详解

    Reflect是ES6为操作对象而提供的新API,而这个API设计的目的只要有: 将Object对象的一些属于语言内部的方法放到Reflect对象上,从Reflect上能拿到语言内部的方法.如:Obj ...

  5. ES6 入门—ES6 Reflect 与 Proxy

    文章目录 前言 一.Proxy 二.Proxy 常用的拦截方法 2.1. get 方法 2.2. set 方法 2.3. has 方法 2.4. construct 方法 三.Reflect 四.ge ...

  6. ES6 Reflect使用笔记

    Reflect Reflect 对象和Proxy对象一样, 为操作对象提供了新的API. 为什么使用 Reflect的方式来操作对象? 将 Object 对象上一些明显属于内部的方法放到 Reflec ...

  7. 【ES6(2015)】Reflect

    文章目录 1. 设计目的 2. 常用方法 Reflect对象与Proxy对象一样,也是ES6 为了操作对象而提供的新 API. 1. 设计目的 将Object属于语言内部的方法放到Reflect上 l ...

  8. ES6中的reflect和proxy和一个on-change

    理解reflect 反射,在运行时获得程序或程序集每一个类型的成员和成员信息. JAVA里程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态地创建对象并调用其属性,这样的对象的 ...

  9. ES6 复习,知识补充

    ES6 知识补充 概念 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了. 它的目标,是使得 JavaScript 语 ...

  10. 【笔记-node】《imooc-nodejs入门到企业web开发中的应用》

    目录 课程名 备注 入门必学 nodejs入门到企业web开发中的应用 框架与工具 node.js+koa2+mysql打造前后端分离精品项目<旧岛> 项目实战 20190317-2020 ...

最新文章

  1. 阿里云 flask uwsgi SSl 证书 http 转 https
  2. 全麦吐司和普通吐司的区别_全麦面包和普通面包的区别
  3. 给Ubuntu软件升级命令
  4. ngx_lua_API 指令详解(一)ngx.timer.at 指令
  5. Error:Unable to tunnel through proxy. Proxy returns HTTP/1.1 400 Bad Request
  6. VTK:可视化之StructuredDataTypes
  7. Flowable 数据库表结构 ACT_HI_PROCINST
  8. dom4j的操作(增删改查)
  9. 【Beta】Scrum Meeting 3
  10. TortoiseSVN汉化教程
  11. 微信小程序模拟器加载图片成功,真机加载失败
  12. 古剑奇谭ol服务器位置,古剑奇谭ol大区选择 去哪个区好各大区分析
  13. python3中eval函数用法简介_python3中eval函数用法使用简介
  14. 极值点偏移问题的处理策略及探究(作业帮的毕冶老师总结)
  15. 3. Kubernetes资源-概述
  16. webstorm-主题和配色
  17. C语言限时答题小程序
  18. 图构建:领域本体设计原则与动态本体
  19. linux系统 安装nvm
  20. 【不懂就问】互联网、因特网和万维网到底是什么

热门文章

  1. 周鸿祎:真想不通是张小龙这样的人做出了微信!
  2. 内容策划:如何编写产品手册? | 技术写作什么鬼
  3. 浙大远程教育计算机作业2,2016浙大远程教育计算机应用基础作业-2.docx
  4. CAN总线哪个节点在通讯?发送了什么信息?(三)
  5. STM32F1与I2C从设备通讯无应答?
  6. 计算机发展的六大趋势,曙光总裁历军:高性能计算机发展六大趋势
  7. 拒绝编译等待 - 动态研发模式 ARK
  8. RS485总线和 CAN总线区别
  9. arcgis js 底图切换_ArcGIS API for JavaScript切换底图
  10. 公式编辑器如何更改背景色?