我有一个对象:
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],为什么它返回属性值当支柱意味着财产而不是价值。那么我们应该说什么来获得一个房产而不是它的价值呢?这个所有括号表示法的工作原理如何?这对我来说总是令人困惑。
答案 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值”