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) //1

Reflect.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个人记录的更多相关文章

  1. 用树状数组求逆序对数(poj2299)

    Ultra-QuickSort Time Limit: 7000MS   Memory Limit: 65536K Total Submissions: 46995   Accepted: 17168 ...

  2. MySQL启动过程详解二:核心模块启动 init_server_components()

    mysqld_main() 函数中,init_server_components() 函数负责MySQL核心模块的启动,包括mdl系统,Innodb存储引擎的启动等等: 1. mdl子系统初始化. 2 ...

  3. Appfuse:记录操作日志

    appfuse的数据维护操作都发生在***form页面,与之对应的是***FormController,在Controller中处理数据的操作是onSubmit方法,既然所有的操作都通过onSubmi ...

  4. 12,13 Proxy和Reflect

    Proxy和Reflect Proxy(代理) Proxy用于修改某些操作的默认行为,等同于在语言层面做出修改,所以属于一种"元编程"(meta programming),即对编程 ...

  5. Spring AOP实例——异常处理和记录程序执行时间

    实例简介: 这个实例主要用于在一个系统的所有方法执行过程中出线异常时,把异常信息都记录下来,另外记录每个方法的执行时间. 用两个业务逻辑来说明上述功能,这两个业务逻辑首先使用Spring AOP的自动 ...

  6. Spring aop 记录操作日志 Aspect

    前几天做系统日志记录的功能,一个操作调一次记录方法,每次还得去收集参数等等,太尼玛烦了.在程序员的世界里,当你的一个功能重复出现多次,就应该想想肯定有更简单的实现方法.于是果断搜索各种资料,终于搞定了 ...

  7. 报错记录:getOutputStream() has already been called for this response

    仅作记录:参考文章:http://www.blogjava.net/vickzhu/archive/2008/11/03/238337.html 报错信息: java.lang.IllegalStat ...

  8. 记一次创建LVM的日志记录

    先上一张鸟哥LVM的图.感觉这张最清楚了. #以下以Xshell的日志记录系统直接记录.上面添加了一些个人理解的注释 [BEGIN] 2016/9/13 9:22:24 #先查看下硬盘的情况. [ro ...

  9. 记录maven java.lang.String cannot be cast to XX error

    在项目开发中自定义了一个maven plugin,在本地能够很好的工作,但是在ci server上却无法正常工作报错为: --------------------------------------- ...

随机推荐

  1. NUC972当检测到sd卡时,在sd卡驱动中操作gpio开启sd卡的电源,解决sd卡因低电压有时识别不正常的问题

    1.根据硬件原理图,找到对应控制sd卡电源的gpio引脚,并在sd卡驱动文件中定义操作改该引脚的宏 2.在sd卡检测函数中,使用glib增加开sd卡电源的操作,如此当sd卡每次被检测到时,驱动中就会自 ...

  2. matlab 向量操作作业

    写出下列语句的计算结果及作用 clear    清除所有变量 clc    清屏 A = [2 5 7 1 3 4];    创建行向量并赋值 odds = 1:2:length(A);    冒号操 ...

  3. 状态模式(Established close)

    状态模式(Established close) 引子 铁扇公主:以前陪我看月亮的时候,叫人家小甜甜,现在新人胜旧人了,叫人家牛夫人! 定义 Allow an object to alter its b ...

  4. FL Studio通道窗口和步进音序器知识讲解

    FL Studio中通道窗口是以样本为概念的音乐制作基础.通道窗口包含了步进音序器并结合了各种丰富的功能,可以通过通道窗口打开各通道的设置窗口.钢琴卷轴等.步进音序器在节奏制作方便表现出很好的优势,它 ...

  5. JS 数组对象

    定义数组: 数组对象用来在单独的变量名中存储一系列的值. 创建一个数组有三种方法. 1: 常规方式: var myCars=new Array(); myCars[0]="Saab" ...

  6. leetcode 33和 leetcode81 II

    //接上上一篇博客,继续这个题目,现在数组中会有重复元素,情况将会变得十分复杂,比如说1,1,1,1,1   或者1,1,3,1再来 3,3,3,1,1,1,3,这些都是可以的,都是符合题目要求的,如 ...

  7. objetive-C中属性变量和成员变量

    属性变量 @property和@synthesize可以自动生成某个类成员变量的存取方法. readwrite:这个属性是默认的情况,会自动生成存取器 assign:这个属性一般用来处理基础类型,比如 ...

  8. Apache HTTPD 换行解析漏洞--CVE-2017-15715

    CVE-2017-15715 一.漏洞描述 Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页.其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1 ...

  9. CentOS6.5上增加中文字体库,确保前端WEB可以正常显示

    1 下载字体 可以在网上下载,也可以在 windows 目录下(C:\Windows\Fonts)找到对应字体,这里是从另一套系统上 copy simsun.ttf 文件. 2 查看当前系统中已安装的 ...

  10. CPU:网卡老哥,你到底怎么工作的?

    阿Q造访 我是一个网卡,居住在一个机箱内的主板上,负责整台计算机的网络通信,要是没有我,这里就成了一个信息孤岛了,那也太无聊了- 上个周末,服务器断电维护了,这是我难得的休息时间,我准备打个盹儿眯一会 ...