ES6反射

反射是什么

1.Reflect就是剑js的内置对象,它的主要作用就是提供一些方法,让使用者用这么些方法去访问底层的功能(增删改查)
2.js的底层功能无非就是对对象的的判断增删改查,函数的调用,属性的赋值取值
3.为什么要使用它,无非就是为了实现函数式编程的思想:减少代码,让代码变得更纯粹,减少符号的使用

Reflect.set(target,name,value)

给对象属性赋值

const obj = {
	name : 'jack',
	age : 18,
	sex : '男'
}
Reflect.set(obj,'age',20);//将obj中的age改为20

Reflect.get(target,name)

查找并返回target对象的name属性,如果没有该属性,则返回undefine

const obj = {
	name : 'jack',
	age : 18,
	sex : '男'
}
Reflect.get(obj,'ages');//obj中没有ages这个属性就放回undefined
Reflect.get(obj,'name')//返回jack

Reflect.apply(target,this,arguments)

等同于Function.prototype.apply.call(fun,this,arguments)
调用函数,并绑定this和参数列表,等同于函数调用

function fun(a,b){
	return a+b
}
Reflect.apply(fun,null,[3,4])
//等同于
 fun(3,4)

Reflect.defineProperty(obj, name, desc)
Reflect.defineProperty方法的作用与Object.defineProperty是一样的,都是为对象定义一个属性。但是,Reflect.defineProperty方法失败时,不会抛出错误,只会返回false

// 失败时抛出错误
Object.defineProperty(obj, name, desc);
// 失败时返回false
Reflect.defineProperty(obj, name, desc);

Reflect.construct()

使用构造函数的方式创建对象

function Fun(a,b){
	this.a = a;
	this.b = b;
}
const t = Reflect.construct(Fun,[1,2])
//等同于
const a = new Fun(1,2)

Reflect.has()

判断对象中是否有这个属性值

const obj = {
	name : 'jack',
	age : 18,
	sex : '男'
}
Reflect.has(obj,"name")
//等同于
'name' in obj

Reflect.deleteProperty()

删除对象中的某一项

const obj = {
	name : 'jack',
	age : 18,
	sex : '男'
}
Reflect.deleteProperty(obj,"sex")

Reflect.setPrototypeOf(obj, newProto)

设置对象的__proto__属性

Object.setPrototypeOf(obj, newProto)
//对应于
Reflect.setPrototypeOf(obj, newProto)

Reflect.getPrototypeOf(obj, newProto)

读取对象的__proto__属性

Object.getPrototypeOf(obj)
//对应于
Reflect.getPrototypeOf(obj, newProto)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值