Open yanlele opened 1 month ago
关键词:Reflect 函数
Reflect.get()和直接通过对象[.]访问获取属性有以下一些区别:
Reflect.get()
[.]
一、返回值
Reflect.get():
undefined
const obj = {}; const value = Reflect.get(obj, "property"); console.log(value); // undefined
对象直接访问:
ReferenceError
const obj = {}; // 非严格模式下 console.log(obj.property); // undefined // 严格模式下 ("use strict"); console.log(obj.property); // ReferenceError: property is not defined
二、可接受的参数和功能扩展
receiver
const obj = { name: "John" }; const proxy = new Proxy(obj, {}); console.log(Reflect.get(proxy, "name", { name: "Jane" })); // 'Jane'
三、与代理的交互
const obj = { name: "John" }; const handler = { get(target, property, receiver) { if (property === "name") { return "Modified Name"; } return Reflect.get(target, property, receiver); }, }; const proxy = new Proxy(obj, handler); console.log(proxy.name); // 'Modified Name'
四、一致性和规范性
Reflect
关键词:Reflect 函数
Reflect.get()
和直接通过对象[.]
访问获取属性有以下一些区别:一、返回值
Reflect.get()
:undefined
。对象直接访问:
undefined
;在严格模式下,会抛出一个ReferenceError
错误。二、可接受的参数和功能扩展
Reflect.get()
:receiver
,用于指定属性访问的上下文对象,这在某些情况下非常有用,比如在使用代理时可以控制属性访问的行为。对象直接访问:
三、与代理的交互
Reflect.get()
:对象直接访问:
四、一致性和规范性
Reflect.get()
:Reflect
方法一起提供了一种统一的方式来进行对象操作,有助于提高代码的可读性和可维护性。对象直接访问: