当前位置:首页 > JavaScript

js 实现nameof

2026-03-14 07:26:40JavaScript

在 JavaScript 中实现类似 C# 的 nameof 功能,可以通过以下方法获取变量或属性的名称字符串。以下是几种常见实现方式:

使用函数包装变量

通过函数将变量名转换为字符串,适用于局部变量:

function nameof(obj) {
    return Object.keys(obj)[0];
}

const myVariable = 42;
console.log(nameof({ myVariable })); // 输出 "myVariable"

通过 Proxy 捕获属性名

利用 Proxy 对象拦截属性访问,动态获取属性名:

const nameofHandler = {
    get(target, prop) {
        return prop;
    }
};

const nameof = new Proxy({}, nameofHandler);
console.log(nameof.someProperty); // 输出 "someProperty"

适用于类属性的装饰器方案

使用 TypeScript 装饰器(需开启 experimentalDecorators):

function nameof<T>(key?: keyof T): string {
    return key as string;
}

class Example {
    propertyName: string;
}

console.log(nameof<Example>('propertyName')); // 输出 "propertyName"

构建时转换方案

通过 Babel 插件或 TypeScript 转换器在编译时静态替换:

// 假设存在编译时转换工具
const name = nameof(myVariable); // 编译后变为 "myVariable"

注意事项

  1. 纯 JavaScript 无法直接获取局部变量名,需通过对象包装
  2. 类属性方案在 TypeScript 中更可靠
  3. 生产环境建议考虑编译时方案避免运行时开销

选择具体方案时应考虑:

js 实现nameof

  • 是否需要支持局部变量
  • 是否使用 TypeScript
  • 是否允许构建时转换

标签: jsnameof
分享给朋友:

相关文章

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js实现驼峰

js实现驼峰

实现驼峰命名的几种方法 使用正则表达式和字符串替换 通过正则表达式匹配字符串中的特定模式(如下划线或短横线),并将其后的字母转换为大写,同时移除分隔符。 function toCamelCase(s…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js实现正交

js实现正交

正交的概念 正交在数学和计算机科学中通常指两个向量垂直或线性无关。在编程中,正交性常被用于设计模块化、低耦合的系统。 向量正交判断 判断两个向量是否正交可以通过点积是否为0来实现: functio…