Javascript:获取单个属性名称

时间:2010-10-20 22:04:22

标签: javascript

给出这样一个对象:

{ name: "joe" }

我想获得值“name”。我知道我可以使用for构造来迭代对象中的属性,但是我将要处理的对象将始终只有一个键:值对,我不知道属性的名称。进一步说明:

var a = { age: 24 };
console.log(myFunc(a)) // Displays "age"

var b = { job: "cook" };
console.log(myFunc(b)) // Displays "job"

无论如何都可以在不迭代对象的情况下执行此操作吗?我也想在纯Javascript中这样做。没有框架/库。

5 个答案:

答案 0 :(得分:6)

优良作法是使用.hasOwnProperty确保您不从Object原型返回属性:

function myFunc(obj) {
    for (var prop in obj) {
        if (obj.hasOwnProperty(prop)) return prop;
    }
}

答案 1 :(得分:3)

这似乎是你能得到的最好的:

function myFunc(v) {
  for (var x in v) { return { prop: x, val: v[x] }; }
  return null;
};

答案 2 :(得分:2)

不,迭代是获得属性名称的唯一受到良好支持的方式。所以for...in时间就是这样。只需将其隐藏在一个函数中它就会好看。

但是,您是否应该考虑使用不同类型的对象,例如{"property": "age", "value": 24},甚至是["age", 24]

,这也值得考虑一下。

答案 3 :(得分:2)

您可以迭代对象的属性,只需返回第一个属性。

function myFunc(obj) {
    for (var prop in obj) {
        return prop;
    }
}

编辑:oops,你想要属性名,而不是值

答案 4 :(得分:1)

为什么不迭代?这只是一步。我认为你不能以任何其他方式获得它。如果它让你感觉更好,你甚至可以在第一步之后休息。