首页 > 解决方案 > 获取对象属性名称自引用

问题描述

我正在寻找一种方法来获取对象属性的名称,如下所示:

let o = {
 first: 1,
 second: 2
};

function q(prop) {
 // return name of prop
}

console.log(q(o.first));
// should return "first"

我什至不确定这是否可能,但我只是在问。

主要用例是由请求属性的动态规范给出的,同时保持使用智能感知的优势,这对于大型项目和重构目的可能非常重要。

标签: javascriptreflection

解决方案


我什至不确定这是否可能......

好直觉!它不是。当你这样做时:

q(o.first);

属性 ( )的被传递到. 没有任何关于对象或其属性的内容被传递给,只有值。o.first1qq1

如果您知道该值来自哪个对象,并且该对象只有一个具有匹配值的属性,您就可以弄清楚。但当然,在绝大多数情况下,其中一个或两个都不会是真的。在一般情况下,不,没有什么可以告诉您它来自o.first.


推荐阅读