返回对象的值时,括号表示法如何工作

时间:2016-10-31 12:36:58

标签: javascript arrays function object

我有一个对象:

var contacts = [
{
    "firstName": "Akira",
    "lastName": "Laine",
    "number": "0543236543",
    "likes": ["Pizza", "Coding", "Brownie Points"]
},
{
    "firstName": "Harry",
    "lastName": "Potter",
    "number": "0994372684",
    "likes": ["Hogwarts", "Magic", "Hagrid"]
},
{
    "firstName": "Sherlock",
    "lastName": "Holmes",
    "number": "0487345643",
    "likes": ["Intriguing Cases", "Violin"]
},
{
    "firstName": "Kristian",
    "lastName": "Vos",
    "number": "unknown",
    "likes": ["Javascript", "Gaming", "Foxes"]
}
];

现在我有了循环,在我通过写作返回属性的值之后:

function lookUpProfile(firstName, prop){

for (i = 0; i < contacts.length; i++) {

if (contacts[i].firstName === firstName) {
if (contacts[i].hasOwnProperty(prop)) {
  return contacts[i][prop];

contacts [i] [prop]返回给定的属性值,如“number”:“0487345643”,但我不明白的是,如果我们说返回联系人[i] [prop],为什么它返回属性值当支柱意味着财产而不是价值。那么我们应该说什么来获得一个房产而不是它的价值呢?这个所有括号表示法的工作原理如何?这对我来说总是令人困惑。

2 个答案:

答案 0 :(得分:1)

当您需要访问对象的值但您不确切知道要使用哪个属性时,括号表示法很有用。

例如:

var obj = {
    a: 'test',
    b: 'home'
};
//bracket notation
//define a string prop
var prop = 'a';

//then later we can use prop to access a value
console.log(obj[prop]); //prints 'test'

//its exactly the same as doing this:
console.log(obj['a']); //prints 'test'

//dot notation works when you know the property name
console.log(obj.b); //prints 'home'

在您的函数中,用户可以指定属性名称prop。下面我将'number''lastName'传递给该函数。

console.log(lookUpProfile('Sherlock', 'number')); //prints '0487345643'
console.log(lookUpProfile('Akira', 'lastName')); //prints 'Laine'

答案 1 :(得分:0)

在您的代码中,属性名称是prop变量。使用括号,您可以按名称访问属性。所以,如果你的代码是obj [prop]你实际上对解释器说“我想通过存储在prop变量中的密钥来获取obj值”