怎么做网站里导出没有水印的图,vps小学生,朋友圈网络营销,如何做适合网站大小的图片背景#xff1a;Reflect 为了操作对象而提供的新Api 和 Proxy对象一样 特点
将object 对象的一些明显属于语言内部的方法#xff0c;放到Reflect 上处理#xff1b;修改某些object返回的异常结果#xff0c;让其变得更合理#xff1b;让object操作都变成函数行为#xf… 背景Reflect 为了操作对象而提供的新Api 和 Proxy对象一样 特点
将object 对象的一些明显属于语言内部的方法放到Reflect 上处理修改某些object返回的异常结果让其变得更合理让object操作都变成函数行为reflect对象上的方法与proxy对象的方法一一对应只要是proxy上的方法就能在Reflect对象上找到对应的方法 console.log(assign in Object) // object使用命令式行为去操作
console.log(Reflect.has(Object,assign)) // Object使用函数的行为去操作
方法 Reflect.get(target,name,receiver)方法 获取target对象上的name的value值 Reflect.set(target,name,value,receiver)方法 设置target对象上的name的value值并且this修改receiver重新绑定 Reflect.has(obj,name)方法 对象上面是否存在某个属性 Reflect.deleteProperty(obj,name)方法 删除对象上某个属性
上述方法中第一个参数不是对象的话,会报错 1使用Reflect.get()方法
语法Reflect.get(target,name,receiver)
接收三个字段 target:目标对象 name:属性名 receiver: this绑定的对象 接收对象 let myObject {
foo: 1,
bar: 2,
get baz () {
• return this.foo this.bar
}
}
console.log(Reflect.get(myObject,foo)) // 1
console.log(Reflect.get(myObject,bar)) // 2
console.log(Reflect.get(myObject,baz)) // 3
1.1 使用receiver来指定数据 let myObject1 {
foot: 1,
bar: 2,
get boo () {
• return this.foot this.bar
}
}
let myReceiver {
foot: 2,
bar: 4,
}
name 在有get的情况下则读取函数的this绑定receiver (this指向发生了改变) console.log(访问,myObject1.boo) // 3
console.log(访问2,Reflect.get(myObject1,boo,myReceiver)) // 6 tips: Reflect.get()的第一个参数必须是一个对象否则会报错 2使用Reflect.set()方法
通过Reflect.set方法设置target的name属性等于value
语法Reflect.set(target,name,value,receiver)
接收四个字段 target:目标对象 name:属性名 value:值 receiver: this绑定的对象 接收对象 let myObject2 {
foot: 1,
set bar (value) {
• return this.foot value
}
}console.log(读取原有属性的值,myObject2.foot) // 1
Reflect.set(myObject2,foot, 2)
console.log(Reflect.set修改原有属性的值,myObject2.foot)// 2
Reflect.set(myObject2,bar, 6)
console.log(通过Reflect.set修改原有属性的值,myObject2.foot) // 6
如果name属性设置了赋值函数则赋值函数的this绑定receiver let myObject3 {
foo: 3,
set bar (value) {
• return this.foo value
}
}
let receiverMyObject {
foo: 0,
}
通过Reflect.set()修改foo的值
Reflect.set(myObject3,bar,2,receiverMyObject)
console.log(target原有的值,myObject3.foo) // 3
console.log(this指向的receiver发生了变化,receiverMyObject.foo) // 2
3使用Reflect.has()方法
通过 Reflect.has()方法查看属性是否存在返回boolean值
let obj1 { a: 1 }
旧方法
console.log(a in obj1) // true
使用 Reflect.has()方法
语法Reflect.has(obj,name)
console.log(Reflect.has(obj1,a)) // true
4删除属性操作
语法Reflect.deleteProperty(obj,name) let obj2 { title: 标题信息, name: 名称信息 }console.log(对象原有内容, obj2) // {title: 标题信息, name: 名称信息}
旧方法
delete obj2.title
console.log(使用旧方法删除的值, obj2) // {name: 名称信息}
使用Reflect.deleteProperty()进行删除
Reflect.deleteProperty(obj2,name)
console.log(使用Reflect.deleteProperty()方法删除后的, obj2) // { } 笔记后续持续更新敬请期待~