首页 > 解决方案 > 从对象返回访问的属性名称(键)

问题描述

是否可以在 Javascript/Typescript 中编写一个将参数名称/键作为字符串返回的函数?

function foo(arg) {...}

let user = new User();
foo(user.userId) // => returns string: "userId"
foo(user.name) // => returns string: "name"

就我的目的而言,如果函数可以返回整个表达式也可以,这意味着:

foo(user.userId) // => returns string: "user.userId"
foo(user.name) // => returns string: "user.name"

标签: javascripttypescriptclass-members

解决方案


一个选项不完全是一个函数,而是一个包装器,如果这是可以接受的 - 你可以使用Proxy拦截属性访问并返回试图访问的密钥:

function User() {}

const userProxy = new Proxy(
  new User(),
  { get: (obj, prop) => prop }
);

console.log(userProxy.userId) // => returns string: "userId"
console.log(userProxy.name) // => returns string: "name"


推荐阅读