ES6-Reflect属性介绍
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、概述
- 二、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属性介绍相关推荐
- es6 --- Reflect的静态方法
Reflect.get(target, name, receiver): 查找并返回 target对象的 name属性,若没有,返回undefined var myObject = {foo: 1,b ...
- es6 Reflect对象的静态方法
Reflect对象的静态方法 Reflect对象一共有 13 个静态方法. Reflect.apply(target, thisArg, args) Reflect.construct(target, ...
- es6 Reflect对象简介
Reflect对象简介 Reflect对象与Proxy对象一样,也是 ES6 为了操作对象而提供的新 API.Reflect对象的设计目的有这样几个. (1) 将Object对象的一些明显属于语言内部 ...
- es6 Reflect对象详解
Reflect是ES6为操作对象而提供的新API,而这个API设计的目的只要有: 将Object对象的一些属于语言内部的方法放到Reflect对象上,从Reflect上能拿到语言内部的方法.如:Obj ...
- ES6 入门—ES6 Reflect 与 Proxy
文章目录 前言 一.Proxy 二.Proxy 常用的拦截方法 2.1. get 方法 2.2. set 方法 2.3. has 方法 2.4. construct 方法 三.Reflect 四.ge ...
- ES6 Reflect使用笔记
Reflect Reflect 对象和Proxy对象一样, 为操作对象提供了新的API. 为什么使用 Reflect的方式来操作对象? 将 Object 对象上一些明显属于内部的方法放到 Reflec ...
- 【ES6(2015)】Reflect
文章目录 1. 设计目的 2. 常用方法 Reflect对象与Proxy对象一样,也是ES6 为了操作对象而提供的新 API. 1. 设计目的 将Object属于语言内部的方法放到Reflect上 l ...
- ES6中的reflect和proxy和一个on-change
理解reflect 反射,在运行时获得程序或程序集每一个类型的成员和成员信息. JAVA里程序中一般的对象的类型都是在编译期就确定下来的,而Java反射机制可以动态地创建对象并调用其属性,这样的对象的 ...
- ES6 复习,知识补充
ES6 知识补充 概念 ECMAScript 6.0(以下简称 ES6)是 JavaScript 语言的下一代标准,已经在 2015 年 6 月正式发布了. 它的目标,是使得 JavaScript 语 ...
- 【笔记-node】《imooc-nodejs入门到企业web开发中的应用》
目录 课程名 备注 入门必学 nodejs入门到企业web开发中的应用 框架与工具 node.js+koa2+mysql打造前后端分离精品项目<旧岛> 项目实战 20190317-2020 ...
最新文章
- 阿里云 flask uwsgi SSl 证书 http 转 https
- 全麦吐司和普通吐司的区别_全麦面包和普通面包的区别
- 给Ubuntu软件升级命令
- ngx_lua_API 指令详解(一)ngx.timer.at 指令
- Error:Unable to tunnel through proxy. Proxy returns HTTP/1.1 400 Bad Request
- VTK:可视化之StructuredDataTypes
- Flowable 数据库表结构 ACT_HI_PROCINST
- dom4j的操作(增删改查)
- 【Beta】Scrum Meeting 3
- TortoiseSVN汉化教程
- 微信小程序模拟器加载图片成功,真机加载失败
- 古剑奇谭ol服务器位置,古剑奇谭ol大区选择 去哪个区好各大区分析
- python3中eval函数用法简介_python3中eval函数用法使用简介
- 极值点偏移问题的处理策略及探究(作业帮的毕冶老师总结)
- 3. Kubernetes资源-概述
- webstorm-主题和配色
- C语言限时答题小程序
- 图构建:领域本体设计原则与动态本体
- linux系统 安装nvm
- 【不懂就问】互联网、因特网和万维网到底是什么
热门文章
- 周鸿祎:真想不通是张小龙这样的人做出了微信!
- 内容策划:如何编写产品手册? | 技术写作什么鬼
- 浙大远程教育计算机作业2,2016浙大远程教育计算机应用基础作业-2.docx
- CAN总线哪个节点在通讯?发送了什么信息?(三)
- STM32F1与I2C从设备通讯无应答?
- 计算机发展的六大趋势,曙光总裁历军:高性能计算机发展六大趋势
- 拒绝编译等待 - 动态研发模式 ARK
- RS485总线和 CAN总线区别
- arcgis js 底图切换_ArcGIS API for JavaScript切换底图
- 公式编辑器如何更改背景色?