ES6学习-Reflect

Reflect

// const obj={
//     name:'xm',
//     age:18
// }

// const proxy =new Proxy(obj,{
//     get(target,property){
//         return Reflect.get(target,property)
//     }
// })//如果不定义get方法,默认执行的get就和上面的方法一样

// console.log(proxy.name);

const obj ={
    name:'xm',
    age:18
}

console.log('name' in obj);
console.log(delete obj['age']);
console.log(Object.keys(obj));//方法杂乱

console.log(Reflect.has(obj,'name'));
console.log(Reflect.deleteProperty(obj,'age'));
console.log(Reflect.ownKeys(obj));//统一提供一套用于操作对象的API

Reflect对象一共有以下13中方法:
1.Reflect.get(target, name, receiver)
//Reflect.get 方法查找并返回 target 对象的 name 属性,如果没有该属性,则返回 undefined。

2.Reflect.set(target, name, value, receiver)
//Reflect.set方法设置target对象的name属性等于value。

3.Reflect.has(target, name)
//Reflect.has方法对应name in obj里面的in运算符。

4.Reflect.deleteProperty(target, name)
//Reflect.deleteProperty方法等同于delete obj[name],用于删除对象的属性。

5.Reflect.construct(target, args)
//Reflect.construct方法等同于new target(…args),提供了一种不使用new关键字来调用构造函数的方法。

6.Reflect.getPrototypeOf(target)
//Reflect.getPrototypeOf方法用于读取对象的__proto__属性,对应Object.getPrototypeOf(obj)。

7.Reflect.setPrototypeOf(target, prototype)
//Reflect.setPrototypeOf方法用于给目标对象设置原型(prototype),对应Object.setPrototypeOf(obj, newProto)方法。它返回一个布尔值,表示是否设置成功。

8.Reflect.apply(target, thisArg, args)
//Reflect.apply方法等同于Function.prototype.apply.call(func, thisArg, args),用于绑定this对象后执行给定函数。

9.Reflect.defineProperty(target, name, desc)
//Reflect.defineProperty方法基本等同于Object.defineProperty,用来为对象定义属性。

10.Reflect.getOwnPropertyDescriptor(target, name)
//Reflect.getOwnPropertyDescriptor基本等同于Object.getOwnPropertyDescriptor,用于得到指定属性的描述对象,将来会替代掉Object.getOwnPropertyDescriptor。

11.Reflect.isExtensible(target)
//Reflect.isExtensible方法对应Object.isExtensible,返回一个布尔值,表示当前对象是否可扩展。

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

13.Reflect.ownKeys(target)
//Reflect.ownKeys方法用于返回对象的所有属性,基本等同于Object.getOwnPropertyNames与Object.getOwnPropertySymbols之和。

你可能感兴趣的:(ES6学习,es6)