前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航

ES6系列之Reflect

首页
2018-12-21 11:10:31
Front-End
ES6Javascript

# 一、简介

# 1.1 什么是Reflect

为操作对象而提供的新API

# 1.2 为什么要设计Reflect

  1. 将Object对象的属于语言内部的方法放到Reflect对象上,即从Reflect对象上拿Object对象内部方法
  2. 将用老Object方法报错的情况,改为返回false
// 旧写法
try {
  Object.defineProperty(target, property, attributes);
  // success
} catch (e) {
  // failure
}
@前端进阶之旅: 代码已经复制到剪贴板
// 新写法
if (Reflect.defineProperty(target, property, attributes)) {
  // success
} else {
  // failure
}
@前端进阶之旅: 代码已经复制到剪贴板
  1. 让Object操作变成函数行为
// 旧写法
'name' in Object //true
@前端进阶之旅: 代码已经复制到剪贴板
// 新写法
Reflect.has(Object,'name') //true
@前端进阶之旅: 代码已经复制到剪贴板
  1. Reflect与Proxy是相辅相成的,在Proxy上有的方法,在Reflect就一定有
let target={}
let handler={
  set(target,proName,proValue,receiver){
    //确认对象的属性赋值成功
    let isSuccess=Reflect.set(target,proName,proValue,receiver)
    if(isSuccess
fe
  • 一、简介
    • 1.1 什么是Reflect
    • 1.2 为什么要设计Reflect
  • 二、Reflect的API
    • 2.1 Reflect.get(target,property,receiver)
    • 2.2 Reflect.set(target,propName,propValue,receiver)
    • 2.3 Reflect.set与Proxy.set
    • 2.4 Reflect.has(obj,name)
    • 2.5 Reflect.deleteProperty(obj, name)
    • 2.6 Reflect.construct(target, args)
    • 2.7 Reflect.getPrototypeOf(obj)
    • 2.8 Reflect.setPrototypeOf(obj, newProto)
    • 2.9 Reflect.apply(func, thisArg, args)
    • 2.10 Reflect.defineProperty(target, propertyKey, attributes)
    • 2.11 Reflect.getOwnPropertyDescriptor(target, propertyKey)
    • 2.12 Reflect.isExtensible (target)
    • 2.13 Reflect.preventExtensions(target)
    • 2.14 Reflect.ownKeys (target)

← ES6系列之装饰器ES6系列之Proxy →