传递没有引号的对象的键名

时间:2017-02-28 21:42:59

标签: javascript arrays object

我想获得obj[key_name](注意,key_name没有引号!):

function myfunc(name){  
   obj = {'key_name': 'hello', key_name: 'world' };
   return obj[name];
}
//myfunc("key_name");  // <--------- this returns obj["key_name"], instead of obj[key_name]
//myfunc(key_name);    // <--------- error.  key_name is undefined

alert(myfunc("key_name"));

如何处理?

2 个答案:

答案 0 :(得分:2)

您不能在对象内两次使用相同的密钥。物业

'key_name' 

完全相同
key_name

所以第二个声明将覆盖第一个声明。

DEMO(foo将有1个属性 - 所以键数组长度为1):

&#13;
&#13;
let foo = {
    key_name: 'foo',
    "key_name": 'bar',
    'key_name': 'baz'
}

console.log(Object.keys(foo).length); // 1
console.log(foo.key_name); // baz
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您的代码已经在运行:

&#13;
&#13;
function myfunc(name){  
  obj = {key_name:"blah"};
  return obj[name];
}

console.log(myfunc("key_name")); // shows "blah"
&#13;
&#13;
&#13;