Reflect也是ES6新增的一个API,他是一个对象,字面意思是反射。
那么这个Reflect有什么用?
它主要提供了很多操作Javascript对象的方法,有点类似Object中操作对象的方法,比如Reflect.getPrototypeOf(target)类似于Object.getPrototypeOf()。
比如Reflect.defineProperty(target,propertyKey,attributes)类似于Object.defineProperty()。
如果我们有Object可以做这些操作,那么为什么还要用Reflect这样的新增对象并且在里面还添加相关的方法?
这是因为在早期的ECMA规范中没有考虑到这种对对象本身的操作如何设计会更规范,所以将这些API放在了Object上。但是Object作为一个构造函数,这些操作实际上放到它身上并不合适。
另外还包含一些类似于in,delete操作,让JS看起来比较奇怪,所以在ES6中新增了Reflect,让我们这些操作都集中到了Reflect对象上,另外在使用Proxy时,可以做到不直接操作原对象
那么Object和Reflect对象之间的API关系,可以查看MDN文档
文章不错支持一下,非常喜欢
文章不错非常喜欢,支持一下
马克吐温的作品就很经典,小时候很爱看
文章不错支持一下,非常喜欢
文章不错非常喜欢,支持
文章不错非常喜欢,支持
[...]回顾如何定义作用域链如何定义'作用域'?说明不同类型的作用域作用域链Scope Chain是JavaScript中的一个基本概念,它属于确定当前执行代码的上下文变量的查找和访问机制。在作用域的构建基于词法作用域的解构,即变量和函数的可见性由它们在源代码中的位置决定。在JavaScript中,每个执行上下文如函数执行上下文都绑有一个与之关联的作用域链。这个作用域就是一个包含多个环境记录Environ[...]
哈喽,你的SSL好像过期喽
@秋风于渭水 确实
[...]不同的浏览器存在兼容性问题的核心原因是不同的浏览器可能使用的是不同的浏览器内核。在现代化开发中,大多数的浏览器兼容性问题是可以通过工程化中的配置选项来解决的。1.比如browserslist可以配置目标的浏览器或者Node环境,然后在不同的工具中起作用,比如autoprefixer/babel/postess preset env等,在进行了正确的配置后,开发的Vue或者React项目在进行打包时[...]