Reflect

    技术2022-07-17  88

    Reflect介绍

    为操作对象而提供的新APIReflect 是一个内置的对象,它提供可拦截JavaScript操作的方法。方法与代理处理程序的方法相同。Reflect 不是一个函数对象,因此它是不可构造的。

    Reflect用法(API)

    (1)Reflect.get(target,property,receiver)

    查找并返回target对象的property属性 例1:

    let obj={ name:"msx", } let result=Reflect.get(obj,"name") console.log(result) //msx

    例2:

    let obj={ //属性yu部署了getter读取函数 get yu(){ //this返回的是Reflect.get的receiver参数对象 return this.name+this.age } } let receiver={ name:"msx", age:"18", } let result=Reflect.get(obj,"yu",receiver) console.log(result) //msx18
    (2)Reflect.set(target,propName,propValue,receiver)

    设置target对象的propName属性为propValue 例1:

    let obj={ name:"chen" } let result=Reflect.set(obj,"name","shi") console.log(result) //true console.log(obj.name) //shi

    例2:

    let obj={ age:38, set setAge(value){ //this返回的是Reflect.get的receiver参数对象 return this.age=value } } let receiver={ age:28 } let result=Reflect.set(obj,"setAge",18,receiver) console.log(result) //true console.log(obj.age) //38 console.log(receiver.age) //18

    下面就不一一举例了,分别给大家写出来方便查阅

    (3)Reflect.has(obj,name)

    查询对象obj是否存在属性name,返回true或false

    (4)Reflect.deleteProperty(obj, name)

    删除对象的属性

    (5)Reflect.construct(target, args)
    let person= new Person('chen') => let person = Reflect.construct(Person, ['chen']);
    (6)Reflect.getPrototypeOf(obj)

    用于读取对象的proto属性,对应Object.getPrototypeOf(obj)

    (7)Reflect.setPrototypeOf(obj, newProto)

    设置目标对象的原型(prototype),对应Object.setPrototypeOf(obj, newProto)方法

    (8)Reflect.apply(func, thisArg, args)

    继承目标对象的特定方法

    (9)Reflect.defineProperty(target, propertyKey, attributes)
    Object.defineProperty(MyDate, 'now', { value: () => Date.now() }); => Reflect.defineProperty(MyDate, 'now', { value: () => Date.now() });
    (10)Reflect.getOwnPropertyDescriptor(target, propertyKey)

    基本等同于Object.getOwnPropertyDescriptor,用于得到指定属性的描述对象

    (11)Reflect.isExtensible (target)

    对应Object.isExtensible,返回一个布尔值,表示当前对象是否可扩展

    (12)Reflect.preventExtensions(target)

    对应Object.preventExtensions方法,用于让一个对象变为不可扩展。它返回一个布尔值,表示是否操作成功

    (13)Reflect.ownKeys (target)

    用于返回对象的所有属性

    Processed: 0.008, SQL: 9