Reflect个人记录
Reflect是一个内置方法,并不能通过构造函数的来进行构建
Reflect.construct:
与new操作父有一些类似,相当于new target(...)
例:
我们先自己定义一个类
class Box{
constructor(...arg){
Object.assign(this,{a:1,arr:[...arg]})
}
play(){
console.log("play")
}
}
然后通过new操作父来创建一个实例
let box=new Box()
console.log(box)
box.play()

然后在通过Reflect.construct来创建一个实例
let boxs=Reflect.construct(Box,[])
console.log(boxs)
boxs.play()

可以看出来两者基本没有区别,通过Reflect的方法创建出来的实例也可以调用构造函数中的方法。但注意:使用Reflect.construct必须要传入一个数组作为参数。对象理论上也可以,但是在构造函数内部对象并能够使用。
Reflect.construct还可以实现对象的创建,这点和Object.create有一些类似
function one() {
this.a=1
}
function two() {
this.a=2
}
let obj=Object.create(one.prototype)
one.apply(obj)
console.log(obj.a) //1
let objs=Reflect.construct(one,[]) one函数中的this会自动绑定到objs上
console.log(objs.a) //1Reflect.defineProperty:基本等同于Object.defineProperty()方法,唯一不同是返回Boolean值。
如过一个属性被成功定义,那么返回true,否则返回false
let obj={
name:"mayu"
}
let bool=Reflect.defineProperty(obj,"name",{
value:"liming"
})
console.log(bool,obj.name) // true,"liming"
可以在定义属性时进行一些操作
if(bool){
//...
}else{
//...
}Reflect.deleteProperty:与delete 类似,都是删除某一个属性,同样也是返回一个bool值,删除成功返回true,失败false
Reflect.deleteProperty(要删除的对象,要删除的属性)
Reflect.has:作用与in 操作符相同。判断当前对象中有无这个属性值,如果对象属性中没有会向上查找到原型属性,有返回true,没有返回false
let obj={
name:"mayu",
a:1,
b:2,
get:()=>{
}
}
let arr=[1,2,3]
let bool=Reflect.has(obj,"toLocaleString")
let bools=Reflect.has(obj,"get")
console.log(bool,bools) //true,true
Reflect.set:为对象设置属性Reflect.set(设置的对象,设置的对象属性名,设置的对象属性值)设置成功返回true,反之false
let obj={
name:"mayu",
a:1,
b:2,
get:()=>{
}
}
let arr=[1,2,3]
Reflect.set(obj,"age",18)
console.log(obj.age) //18
也可以为数组设置某个索引值
Reflect.set(arr,1,"1")
console.log(arr) // "1"
Reflect个人记录的更多相关文章
- 用树状数组求逆序对数(poj2299)
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 46995 Accepted: 17168 ...
- MySQL启动过程详解二:核心模块启动 init_server_components()
mysqld_main() 函数中,init_server_components() 函数负责MySQL核心模块的启动,包括mdl系统,Innodb存储引擎的启动等等: 1. mdl子系统初始化. 2 ...
- Appfuse:记录操作日志
appfuse的数据维护操作都发生在***form页面,与之对应的是***FormController,在Controller中处理数据的操作是onSubmit方法,既然所有的操作都通过onSubmi ...
- 12,13 Proxy和Reflect
Proxy和Reflect Proxy(代理) Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程 ...
- Spring AOP实例——异常处理和记录程序执行时间
实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动 ...
- Spring aop 记录操作日志 Aspect
前几天做系统日志记录的功能,一个操作调一次记录方法,每次还得去收集参数等等,太尼玛烦了.在程序员的世界里,当你的一个功能重复出现多次,就应该想想肯定有更简单的实现方法.于是果断搜索各种资料,终于搞定了 ...
- 报错记录:getOutputStream() has already been called for this response
仅作记录:参考文章:http://www.blogjava.net/vickzhu/archive/2008/11/03/238337.html 报错信息: java.lang.IllegalStat ...
- 记一次创建LVM的日志记录
先上一张鸟哥LVM的图.感觉这张最清楚了. #以下以Xshell的日志记录系统直接记录.上面添加了一些个人理解的注释 [BEGIN] 2016/9/13 9:22:24 #先查看下硬盘的情况. [ro ...
- 记录maven java.lang.String cannot be cast to XX error
在项目开发中自定义了一个maven plugin,在本地能够很好的工作,但是在ci server上却无法正常工作报错为: --------------------------------------- ...
随机推荐
- NUC972当检测到sd卡时,在sd卡驱动中操作gpio开启sd卡的电源,解决sd卡因低电压有时识别不正常的问题
1.根据硬件原理图,找到对应控制sd卡电源的gpio引脚,并在sd卡驱动文件中定义操作改该引脚的宏 2.在sd卡检测函数中,使用glib增加开sd卡电源的操作,如此当sd卡每次被检测到时,驱动中就会自 ...
- matlab 向量操作作业
写出下列语句的计算结果及作用 clear 清除所有变量 clc 清屏 A = [2 5 7 1 3 4]; 创建行向量并赋值 odds = 1:2:length(A); 冒号操 ...
- 状态模式(Established close)
状态模式(Established close) 引子 铁扇公主:以前陪我看月亮的时候,叫人家小甜甜,现在新人胜旧人了,叫人家牛夫人! 定义 Allow an object to alter its b ...
- FL Studio通道窗口和步进音序器知识讲解
FL Studio中通道窗口是以样本为概念的音乐制作基础.通道窗口包含了步进音序器并结合了各种丰富的功能,可以通过通道窗口打开各通道的设置窗口.钢琴卷轴等.步进音序器在节奏制作方便表现出很好的优势,它 ...
- JS 数组对象
定义数组: 数组对象用来在单独的变量名中存储一系列的值. 创建一个数组有三种方法. 1: 常规方式: var myCars=new Array(); myCars[0]="Saab" ...
- leetcode 33和 leetcode81 II
//接上上一篇博客,继续这个题目,现在数组中会有重复元素,情况将会变得十分复杂,比如说1,1,1,1,1 或者1,1,3,1再来 3,3,3,1,1,1,3,这些都是可以的,都是符合题目要求的,如 ...
- objetive-C中属性变量和成员变量
属性变量 @property和@synthesize可以自动生成某个类成员变量的存取方法. readwrite:这个属性是默认的情况,会自动生成存取器 assign:这个属性一般用来处理基础类型,比如 ...
- Apache HTTPD 换行解析漏洞--CVE-2017-15715
CVE-2017-15715 一.漏洞描述 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页.其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1 ...
- CentOS6.5上增加中文字体库,确保前端WEB可以正常显示
1 下载字体 可以在网上下载,也可以在 windows 目录下(C:\Windows\Fonts)找到对应字体,这里是从另一套系统上 copy simsun.ttf 文件. 2 查看当前系统中已安装的 ...
- CPU:网卡老哥,你到底怎么工作的?
阿Q造访 我是一个网卡,居住在一个机箱内的主板上,负责整台计算机的网络通信,要是没有我,这里就成了一个信息孤岛了,那也太无聊了- 上个周末,服务器断电维护了,这是我难得的休息时间,我准备打个盹儿眯一会 ...