js实现反射
JavaScript 实现反射的方法
在 JavaScript 中,反射是一种在运行时检查或修改对象结构和行为的能力。以下是几种常见的实现反射的方式:
使用 Object 的静态方法
通过 Object.keys()、Object.getOwnPropertyNames() 等方法可以获取对象的属性信息,实现基础的反射功能。
const obj = { a: 1, b: 2 };
const properties = Object.getOwnPropertyNames(obj);
console.log(properties); // ['a', 'b']
使用 Reflect 对象
ES6 引入了 Reflect 对象,提供了一组用于操作对象的静态方法,这些方法与 Proxy 的陷阱方法一一对应。
const obj = { a: 1 };
Reflect.set(obj, 'b', 2); // 设置属性
console.log(Reflect.get(obj, 'b')); // 2
使用 Proxy 对象
Proxy 可以拦截对象的操作,实现更灵活的反射行为。
const handler = {
get(target, prop) {
return prop in target ? target[prop] : 'default';
}
};
const proxy = new Proxy({}, handler);
console.log(proxy.a); // 'default'
检查对象类型
通过 typeof 和 instanceof 可以检查对象的类型。
const value = [];
console.log(typeof value); // 'object'
console.log(value instanceof Array); // true
动态调用方法
通过字符串名称动态调用对象的方法。

const obj = {
greet(name) {
return `Hello, ${name}!`;
}
};
const methodName = 'greet';
console.log(obj[methodName]('World')); // 'Hello, World!'
以上方法可以根据具体需求选择使用,Reflect 和 Proxy 是 ES6 提供的更强大的反射工具。






