获取对象属性名称自引用

时间:2019-11-24 17:49:59

标签: javascript reflection

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

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

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

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

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

主要用途是通过动态指定请求的属性,同时保留使用智能感知的优势,这对于大型项目和重构目的而言非常重要。

2 个答案:

答案 0 :(得分:1)

  

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

好本能!不是。当您这样做时:

q(o.first);
o.first属性(1)的

被传递到q中。关于对象或其属性的任何信息都不会传递到q,而只会传递值1

如果您知道该值来自哪个对象,并且该对象只有一个具有匹配值的属性,则可以查明。但是,当然,在大多数情况下,其中之一或两者都不是正确的。在一般情况下,没有,没有什么可告诉您它来自o.first

答案 1 :(得分:0)

您可以尝试对代码进行一些修改

function q(obj,prop)  { 
   if(obj.hasOwnProperty(prop))
    return prop; 
   else
    return null; 
}

console.log(q(o,o.first)); 希望有帮助。