我正在寻找一种获取对象属性名称的方法,如下所示:
let o = {
first: 1,
second: 2
};
function q(prop) {
// return name of prop
}
console.log(q(o.first));
// should return "first"
我什至不确定这是否可行,但我只是在问。
主要用途是通过动态指定请求的属性,同时保留使用智能感知的优势,这对于大型项目和重构目的而言非常重要。
答案 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)); 希望有帮助。