JavaScript:获取对象的第一个也是唯一的属性名称

Foo*_*mus 36 javascript properties object

如果我想枚举一个对象的属性并想要忽略原型,我会使用:

var instance = { ... };

for (var prop in instance) {
    if (instance.hasOwnProperty(prop)) {
        ... 
    }
}
Run Code Online (Sandbox Code Playgroud)

如果instance只有一个属性,我想获得该属性名称怎么办?有没有比这样做更简单的方法:

var instance = { id: "foobar" };

var singleMember = (function() {
    for (var prop in instance) {
        if (instance.hasOwnProperty(prop)) {
            return prop;
        }
    }
})();
Run Code Online (Sandbox Code Playgroud)

Koo*_*Inc 46

也许Object.keys可以为你工作.如果其长度返回1,则可以使用yourObject[Object.keys[0]]获取对象的唯一属性.MDN链接还显示了在没有keys方法1的环境中使用的自定义函数.像这样的代码:

var obj = {foo:'bar'}, 
    kyz = Object.keys(obj);
if (kyz.length === 1){
   alert(obj[kyz[0]]); //=> 'bar'
} else {
  /* loop through obj */
}
Run Code Online (Sandbox Code Playgroud)

1某些旧版浏览器不支持Object.keys.MDN链接提供代码以使其在这些浏览器中工作.请参阅上述 MDN页面中的标题兼容性


Isa*_*Han 13

最短形式:

instance[Object.keys(instance)[0]];
Run Code Online (Sandbox Code Playgroud)

ES6 +功能:

let first = v => v[Object.keys(v)[0]];
Run Code Online (Sandbox Code Playgroud)

使用功能:

first({a:'first', b:'second'}) // return 'first'
Run Code Online (Sandbox Code Playgroud)