当前位置:首页 > JavaScript

js实现反射

2026-03-14 09:44:55JavaScript

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'

检查对象类型

通过 typeofinstanceof 可以检查对象的类型。

const value = [];
console.log(typeof value); // 'object'
console.log(value instanceof Array); // true

动态调用方法

通过字符串名称动态调用对象的方法。

js实现反射

const obj = {
  greet(name) {
    return `Hello, ${name}!`;
  }
};
const methodName = 'greet';
console.log(obj[methodName]('World')); // 'Hello, World!'

以上方法可以根据具体需求选择使用,ReflectProxy 是 ES6 提供的更强大的反射工具。

标签: 反射js
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

原生js实现轮播图

原生js实现轮播图

基本结构搭建 HTML部分需要包含轮播图容器、图片列表及导航按钮。结构示例如下: <div class="slider-container"> <div class="slid…

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…